From 64869d0f17b1309833af497d129e29025d1f837d Mon Sep 17 00:00:00 2001 From: Skyxim Date: Sat, 8 Jan 2022 16:57:59 +0800 Subject: [PATCH] [Fixed] Remove the Linux automatic routing configuration Change the name of the Linux network card to utun --- listener/tun/dev/dev.go | 59 ----------------------------------- listener/tun/dev/dev_linux.go | 10 +++--- 2 files changed, 4 insertions(+), 65 deletions(-) diff --git a/listener/tun/dev/dev.go b/listener/tun/dev/dev.go index 004b51da..54ff591e 100644 --- a/listener/tun/dev/dev.go +++ b/listener/tun/dev/dev.go @@ -1,13 +1,5 @@ package dev -import ( - "bytes" - "os/exec" - "runtime" - - "github.com/Dreamacro/clash/log" -) - // TunDevice is cross-platform tun interface type TunDevice interface { Name() string @@ -18,54 +10,3 @@ type TunDevice interface { Read(buff []byte) (int, error) Write(buff []byte) (int, error) } - -func SetLinuxAutoRoute() { - log.Infoln("Tun adapter auto setting global route") - addLinuxSystemRoute("0") - //addLinuxSystemRoute("1") - //addLinuxSystemRoute("2/7") - //addLinuxSystemRoute("4/6") - //addLinuxSystemRoute("8/5") - //addLinuxSystemRoute("16/4") - //addLinuxSystemRoute("32/3") - //addLinuxSystemRoute("64/2") - //addLinuxSystemRoute("128.0/1") - //addLinuxSystemRoute("198.18.0/16") -} - -func RemoveLinuxAutoRoute() { - log.Infoln("Tun adapter removing global route") - delLinuxSystemRoute("0") - //delLinuxSystemRoute("1") - //delLinuxSystemRoute("2/7") - //delLinuxSystemRoute("4/6") - //delLinuxSystemRoute("8/5") - //delLinuxSystemRoute("16/4") - //delLinuxSystemRoute("32/3") - //delLinuxSystemRoute("64/2") - //delLinuxSystemRoute("128.0/1") - //delLinuxSystemRoute("198.18.0/16") -} - -func addLinuxSystemRoute(net string) { - if runtime.GOOS != "darwin" && runtime.GOOS != "linux" { - return - } - cmd := exec.Command("route", "add", "-net", net, "meta") - var stderr bytes.Buffer - cmd.Stderr = &stderr - if err := cmd.Run(); err != nil { - log.Errorln("[auto route] Failed to add system route: %s: %s , cmd: %s", err.Error(), stderr.String(), cmd.String()) - } -} - -func delLinuxSystemRoute(net string) { - if runtime.GOOS != "darwin" && runtime.GOOS != "linux" { - return - } - cmd := exec.Command("route", "delete", "-net", net, "meta") - _ = cmd.Run() - //if err := cmd.Run(); err != nil { - // log.Errorln("[auto route]Failed to delete system route: %s, cmd: %s", err.Error(), cmd.String()) - //} -} diff --git a/listener/tun/dev/dev_linux.go b/listener/tun/dev/dev_linux.go index 4d63a87d..aeb90d4e 100644 --- a/listener/tun/dev/dev_linux.go +++ b/listener/tun/dev/dev_linux.go @@ -7,6 +7,7 @@ import ( "bytes" "errors" "fmt" + "github.com/Dreamacro/clash/log" "net/url" "os" "os/exec" @@ -38,7 +39,7 @@ type tunLinux struct { // OpenTunDevice return a TunDevice according a URL func OpenTunDevice(tunAddress string, autoRoute bool) (TunDevice, error) { - deviceURL, _ := url.Parse("dev://meta") + deviceURL, _ := url.Parse("dev://utun") mtu, _ := strconv.ParseInt(deviceURL.Query().Get("mtu"), 0, 32) t := &tunLinux{ @@ -62,7 +63,7 @@ func OpenTunDevice(tunAddress string, autoRoute bool) (TunDevice, error) { } if autoRoute { - SetLinuxAutoRoute() + log.Warnln("linux unsupported automatic route") } return dev, nil case "fd": @@ -76,7 +77,7 @@ func OpenTunDevice(tunAddress string, autoRoute bool) (TunDevice, error) { return nil, err } if autoRoute { - SetLinuxAutoRoute() + log.Warnln("linux unsupported automatic route") } return dev, nil } @@ -105,9 +106,6 @@ func (t *tunLinux) IsClose() bool { func (t *tunLinux) Close() error { t.stopOnce.Do(func() { - if t.autoRoute { - RemoveLinuxAutoRoute() - } t.closed = true t.tunFile.Close() })