Skip to content

Commit ddd7ab4

Browse files
zonyitooMax Lv
authored and
Max Lv
committed
Set Mark for outbound proxy
1 parent 7bd24b2 commit ddd7ab4

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

main.go

+19-2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ var (
5454
server = flag.Bool("server", false, "Run in server mode")
5555
logLevel = flag.String("loglevel", "", "loglevel for v2ray: debug, info, warning (default), error, none.")
5656
version = flag.Bool("version", false, "Show current version of v2ray-plugin")
57+
fwmark = flag.Int("fwmark", 0, "Set SO_MARK option for outbound sockets.")
5758
)
5859

5960
func homeDir() string {
@@ -150,8 +151,16 @@ func generateConfig() (*core.Config, error) {
150151
Settings: serial.ToTypedMessage(transportSettings),
151152
}},
152153
}
153-
if *fastOpen {
154-
streamConfig.SocketSettings = &internet.SocketConfig{Tfo: internet.SocketConfig_Enable}
154+
if *fastOpen || *fwmark != 0 {
155+
socketConfig := &internet.SocketConfig{}
156+
if *fastOpen {
157+
socketConfig.Tfo = internet.SocketConfig_Enable
158+
}
159+
if *fwmark != 0 {
160+
socketConfig.Mark = int32(*fwmark)
161+
}
162+
163+
streamConfig.SocketSettings = socketConfig
155164
}
156165
if *tlsEnabled {
157166
tlsConfig := tls.Config{ServerName: *host}
@@ -325,6 +334,14 @@ func startV2Ray() (core.Server, error) {
325334
*vpn = true
326335
}
327336

337+
if c, b := opts.Get("fwmark"); b {
338+
if i, err := strconv.Atoi(c); err == nil {
339+
*fwmark = i
340+
} else {
341+
logWarn("failed to parse fwmark, use default value")
342+
}
343+
}
344+
328345
if *vpn {
329346
registerControlFunc()
330347
}

0 commit comments

Comments
 (0)