wg0 是 wireguard 的虚拟网卡,AllowedIPs 为 0.0.0.0/0 并且 Table = off。
curl 可以实现通过 wg0 请求成功:
curl --interface wg0 http://ifconfig.me
以下代码却不行,请问为什么?应该怎么修改?
package main
import (
"context"
"fmt"
"io/ioutil"
"net"
"net/http"
"time"
)
func main() {
ief, _ := net.InterfaceByName("wg0")
addrs, _ := ief.Addrs()
d := net.Dialer{
LocalAddr: &net.TCPAddr{IP: addrs[0].(*net.IPNet).IP},
Timeout: time.Second * 5,
}
fmt.Println(d.LocalAddr)
c := &http.Client{
Transport: &http.Transport{
DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
return d.DialContext(ctx, network, addr)
},
},
}
r, err := c.Get("http://ifconfig.me")
if err != nil {
panic(err)
}
defer r.Body.Close()
b, _ := ioutil.ReadAll(r.Body)
fmt.Println(string(b))
}