mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2025-12-24 13:27:56 +08:00
在dial中在localAddr指明时,区分v4和v6
This commit is contained in:
@@ -68,7 +68,7 @@ sudo cp examples/vlesss.server.toml server.toml
|
||||
如果你不愿意使用linux的“后台服务”,只是想手动去令它在后台运行,那么实际上,在verysimple所在位置运行如下一段命令即可。
|
||||
|
||||
```
|
||||
nohup ./verysimple_linux_amd64 -c server.toml >/dev/null &
|
||||
nohup ./verysimple -c server.toml >/dev/null &
|
||||
```
|
||||
|
||||
这里将它的标准输出舍弃了,因为一般来说我们会在toml配置文件中 配置好日志文件名称;如果不舍弃输出的话,就会多一个输出(到控制台),增加系统负担。
|
||||
|
||||
@@ -147,6 +147,29 @@ func (a Addr) DialWithOpt(sockopt *Sockopt, localAddr net.Addr) (net.Conn, error
|
||||
}
|
||||
if localAddr != nil {
|
||||
dialer.LocalAddr = localAddr
|
||||
|
||||
//localAddr一般用于指定ipv4或者ipv6出站,所以我们这里标注一下。
|
||||
switch a.Network {
|
||||
case "tcp":
|
||||
if ta, ok := localAddr.(*net.TCPAddr); ok {
|
||||
|
||||
//ipv6
|
||||
if ta.IP.To4() == nil {
|
||||
a.Network = "tcp6"
|
||||
} else {
|
||||
a.Network = "tcp4"
|
||||
}
|
||||
}
|
||||
case "udp":
|
||||
if ta, ok := localAddr.(*net.UDPAddr); ok {
|
||||
|
||||
if ta.IP.To4() == nil {
|
||||
a.Network = "udp6"
|
||||
} else {
|
||||
a.Network = "udp4"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if sockopt != nil {
|
||||
dialer.Control = func(network, address string, c syscall.RawConn) error {
|
||||
|
||||
Reference in New Issue
Block a user