Skip to content

Commit

Permalink
fix: OpenClash 回环
Browse files Browse the repository at this point in the history
  • Loading branch information
adlyq committed Jun 1, 2022
1 parent c95735f commit 1af39cb
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 23 deletions.
4 changes: 3 additions & 1 deletion component/process/process.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ func FindUid(network string, srcIP netip.Addr, srcPort int) (int32, error) {
}

func ShouldFindProcess(metadata *C.Metadata) bool {
if !enableFindProcess || metadata.Process != "" || metadata.ProcessPath != "" {
if !enableFindProcess ||
metadata.Process != "" ||
metadata.ProcessPath != "" {
return false
}
for _, ip := range localIPs {
Expand Down
26 changes: 4 additions & 22 deletions listener/tun/ipstack/commons/router_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ package commons

import (
"fmt"
"github.com/Dreamacro/clash/common/cmd"
"github.com/Dreamacro/clash/listener/tun/device"
"github.com/vishvananda/netlink"
"net"
Expand Down Expand Up @@ -46,36 +45,26 @@ func ConfigInterfaceAddress(dev device.Device, addr netip.Prefix, forceMTU int,
return err
}

naddr, err := netlink.ParseAddr(addr.String())
nlAddr, err := netlink.ParseAddr(addr.String())
if err != nil {
return err
}

if err = netlink.AddrAdd(metaLink, naddr); err != nil && err.Error() != "file exists" {
if err = netlink.AddrAdd(metaLink, nlAddr); err != nil && err.Error() != "file exists" {
return err
}

if err = netlink.LinkSetUp(metaLink); err != nil {
return err
}

if err = netlink.RouteAdd(&netlink.Route{
LinkIndex: metaLink.Attrs().Index,
Scope: netlink.SCOPE_LINK,
Protocol: 2,
Src: ip.AsSlice(),
Table: 254,
}); err != nil && err.Error() != "file exists" {
return err
}

if autoRoute {
_ = configInterfaceRouting(metaLink.Attrs().Index, interfaceName, ip)
_ = configInterfaceRouting(metaLink.Attrs().Index, ip)
}
return nil
}

func configInterfaceRouting(index int, interfaceName string, ip netip.Addr) error {
func configInterfaceRouting(index int, ip netip.Addr) error {
for _, route := range defaultRoutes {
_, ipn, err := net.ParseCIDR(route)
if err != nil {
Expand All @@ -97,11 +86,4 @@ func configInterfaceRouting(index int, interfaceName string, ip netip.Addr) erro
return nil
}

func execRouterCmd(action, route, interfaceName, linkIP, table string) error {
cmdStr := fmt.Sprintf("ip route %s %s dev %s proto kernel scope link src %s table %s", action, route, interfaceName, linkIP, table)

_, err := cmd.ExecCmd(cmdStr)
return err
}

func CleanupRule() {}

0 comments on commit 1af39cb

Please sign in to comment.