以 wireguard 假设现在使用 wireguard 绑定到 utun5
再设定路由 0.0.0.0/1 128.0.0.0/1 再将服务端的 IP 路由指向 en0 此时可以正常使用,全局 IP 都变成了服务器的 IP
我想在此时能够再指定网卡 en0 进行拨号
先测试了(指定出口 IP ) dial, err := net.DialTCP("tcp", local, remote)
失败,提示错误 no route to host
然后测试了 (指定出口网卡)
dialer := &net.Dialer{
Control: func(network, address string, conn syscall.RawConn) error {
return conn.Control(func(fd uintptr) {
switch network {
case "tcp4", "udp4":
unix.SetsockoptInt(int(fd), unix.IPPROTO_IP, unix.IP_BOUND_IF, bindIface.Index)
case "tcp6", "udp6":
unix.SetsockoptInt(int(fd), unix.IPPROTO_IPV6, unix.IPV6_BOUND_IF, bindIface.Index)
}
})
},
}
依旧无效 此时提示错误:dial tcp xxxx:xxx: connect: network is unreachable
是不是没办法实现了。。。。。。
PS:以上两种测试 在不开启 utun 时 测试 en0 是正常的 在开启 utun 时 测试 utun 也是正常的
也就是同时只有一个出口可以正常得到响应
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.