From a4036a76bbed611f91422472240471f6a024cd6a Mon Sep 17 00:00:00 2001 From: fumiama Date: Thu, 30 Dec 2021 13:01:50 +0800 Subject: [PATCH] fix recv non-ip packet --- go.mod | 1 - go.sum | 30 ------------------------------ lower/nic.go | 13 +++++-------- 3 files changed, 5 insertions(+), 39 deletions(-) diff --git a/go.mod b/go.mod index 4192931..9d6b82a 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,5 @@ require ( github.com/fumiama/water v0.0.0-20211229155341-82646596a427 github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 github.com/sirupsen/logrus v1.8.1 - golang.zx2c4.com/wintun v0.0.0-20211104114900-415007cec224 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b ) diff --git a/go.sum b/go.sum index 06a5fdd..be098af 100644 --- a/go.sum +++ b/go.sum @@ -10,36 +10,8 @@ github.com/fumiama/go-x25519 v1.0.0 h1:hiGg9EhseVmGCc8T1jECVkj8Keu/aJ1ZK05RM8Vua github.com/fumiama/go-x25519 v1.0.0/go.mod h1:8VOhfyGZzw4IUs4nCjQFqW9cA3V/QpSCtP3fo2dLNg4= github.com/fumiama/gofastTEA v0.0.6 h1:Yni3MXDbJVa/c4CecgdZDgCJK+fLdvGph+OBqY2mtiI= github.com/fumiama/gofastTEA v0.0.6/go.mod h1:+sBZ05nCA2skZkursHNvyr8kULlEetrYTM2y5kA4rQc= -github.com/fumiama/water v0.0.0-20211229125942-5b6a70c00f4c h1:ww0Xu5oR+ItCOu/UG5oTZhxemEXac3RDW6dZHv+Hbkw= -github.com/fumiama/water v0.0.0-20211229125942-5b6a70c00f4c/go.mod h1:n7jB3H3AVzelGQJA+9r06R4XlGF4P1SVtcpvyLw5p+k= -github.com/fumiama/water v0.0.0-20211229134828-67285c9b6731 h1:V4+UIuj2gIG3HDU7lKOaC7JDu59Kr42trJ/pdhB0mj0= -github.com/fumiama/water v0.0.0-20211229134828-67285c9b6731/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ= -github.com/fumiama/water v0.0.0-20211229135330-90abaa32e415 h1:LipchbWUx40wYqE2eOOE/HU5t6atlphAYaOFTFDt6QA= -github.com/fumiama/water v0.0.0-20211229135330-90abaa32e415/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ= -github.com/fumiama/water v0.0.0-20211229140044-a18737bcce9e h1:4PUm9m0cT4caVf9oGF9DKrIzjyzCSP6CFuPVID/f2Z8= -github.com/fumiama/water v0.0.0-20211229140044-a18737bcce9e/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ= -github.com/fumiama/water v0.0.0-20211229140409-29e50756f779 h1:lyAFI9rSTdTDiIOYdCWbe21yAyUUiNoWD6SVV7Vv/ps= -github.com/fumiama/water v0.0.0-20211229140409-29e50756f779/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ= -github.com/fumiama/water v0.0.0-20211229143618-2e6a6e7c8734 h1:0HpMmtsfBphCjpDclBy/tprImRjXfBYtOLg2lif/jlk= -github.com/fumiama/water v0.0.0-20211229143618-2e6a6e7c8734/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ= -github.com/fumiama/water v0.0.0-20211229150150-f6779d7a5809 h1:aWzKgNIJBlUB75Xa1PoObKixPhQUMw8D23UDlIDyXjw= -github.com/fumiama/water v0.0.0-20211229150150-f6779d7a5809/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ= -github.com/fumiama/water v0.0.0-20211229151111-67ffd8a6cc33 h1:1s2DyitGTKCVhFvQrlfXLNS9JBKhyrzzj1lZVzs8Szk= -github.com/fumiama/water v0.0.0-20211229151111-67ffd8a6cc33/go.mod h1:2TP+zWbGdQhV8LgKMkltYUX7q6KqGoRUHIPKrUmsgxQ= -github.com/fumiama/water v0.0.0-20211229152420-ea1778e8a8fe h1:RHlAMWsIRaEhl6O6fkYZIy9NFX3SLCvNRf1zfgl62zE= -github.com/fumiama/water v0.0.0-20211229152420-ea1778e8a8fe/go.mod h1:XiHGWg8Lgc6+ZENjj9+qQinTraD+FFoJM9uiOs94PR4= -github.com/fumiama/water v0.0.0-20211229152936-c7837c176989 h1:ftaxOPIang127djF2u83QQqLV38yBeqJN/V6jDr29pY= -github.com/fumiama/water v0.0.0-20211229152936-c7837c176989/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= -github.com/fumiama/water v0.0.0-20211229153125-4158c133a4d8 h1:nqcrKTt6+4AO+CXlyz/cqdANke8UOVSLZ50uoofcI0g= -github.com/fumiama/water v0.0.0-20211229153125-4158c133a4d8/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= -github.com/fumiama/water v0.0.0-20211229153704-aca20df16f4f h1:iUInIzt++weOzl5Rx0qdzQuvDPWbBKn0kUzbLnsbo5I= -github.com/fumiama/water v0.0.0-20211229153704-aca20df16f4f/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= -github.com/fumiama/water v0.0.0-20211229155016-ed08eb9b3569 h1:UBzWLI/pnCQDfIDvB/P6kmuipkS6WM0jKpP4ZpwzHAs= -github.com/fumiama/water v0.0.0-20211229155016-ed08eb9b3569/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= github.com/fumiama/water v0.0.0-20211229155341-82646596a427 h1:6T/Y1o2wrNzJKjhjOsCVkKJwIlU8jfUBfRYFYQ9r3Uc= github.com/fumiama/water v0.0.0-20211229155341-82646596a427/go.mod h1:BBnNY9PwK+UUn4trAU+H0qsMEypm7+3Bj1bVFuJItlo= -github.com/fumiama/wintun v0.0.0-20211229152127-c33dd13d28a5 h1:pkMNtWnrMuqsy+o4y6ur0+lu8gw96I3If61k+9n0sK4= -github.com/fumiama/wintun v0.0.0-20211229152127-c33dd13d28a5/go.mod h1:dPOG7Af/ArO62RgBz2JJTNFByBn/IXWLo/1kZKcLSe8= github.com/fumiama/wintun v0.0.0-20211229152851-8bc97c8034c0 h1:WfrSFlIlCAtg6Rt2IGna0HhJYSDE45YVHiYqO4wwsEw= github.com/fumiama/wintun v0.0.0-20211229152851-8bc97c8034c0/go.mod h1:dPOG7Af/ArO62RgBz2JJTNFByBn/IXWLo/1kZKcLSe8= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -104,8 +76,6 @@ golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.zx2c4.com/wintun v0.0.0-20211104114900-415007cec224 h1:Ug9qvr1myri/zFN6xL17LSCBGFDnphBBhzmILHsM5TY= -golang.zx2c4.com/wintun v0.0.0-20211104114900-415007cec224/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/lower/nic.go b/lower/nic.go index 67f73be..dcea473 100644 --- a/lower/nic.go +++ b/lower/nic.go @@ -3,6 +3,7 @@ package lower import ( "os" "os/exec" + "strconv" "github.com/fumiama/water" "github.com/fumiama/water/waterutil" @@ -45,16 +46,12 @@ func (nc *NIC) Start(m *link.Me) { go func() { // 接收到 NIC for nc.hasstart { packet := m.Read() - logrus.Infoln("[lower] recv", len(packet.Data), "bytes packet") - if !waterutil.IsIPv4(packet.Data) { - logrus.Warnln("[lower] recv recv non-ipv4 packet") - continue - } _, err := nc.ifce.Write(packet.Data) if err != nil { logrus.Errorln("[lower] recv write to nic err:", err) break } + logrus.Infoln("[lower] recv write", len(packet.Data), "bytes packet to nic") } }() buf := make([]byte, 4096) @@ -70,16 +67,16 @@ func (nc *NIC) Start(m *link.Me) { } packet = packet[:n] if !waterutil.IsIPv4(packet) { - logrus.Warnln("[lower] send recv non-ipv4 packet") + logrus.Warnln("[lower] skip to send", len(packet), "bytes non-ipv4 packet") continue } - logrus.Infoln("[lower] send", n, "bytes packet") dst := waterutil.IPv4Destination(packet) srcport := waterutil.IPv4SourcePort(packet) dstport := waterutil.IPv4DestinationPort(packet) + logrus.Infoln("[lower] sending", n, "bytes packet from :"+strconv.Itoa(int(srcport)), "to", dst.String()+":"+strconv.Itoa(int(dstport))) lnk, err := m.Connect(dst.String()) if err != nil { - logrus.Errorln("[lower] connect to peer err:", err) + logrus.Warnln("[lower] connect to peer", dst.String(), "err:", err) continue } lnk.Write(head.NewPacket(head.ProtoData, srcport, dstport, packet))