背景:
我从运行 OpenWRT 的住宅路由器后面的命令行通过 openvpn 客户端 (v2.4.4) 连接到服务器。
最近,我在系统日志中看到以下内容:
Aug 8 17:16:28 Deluxe kernel: [12972.603549] IPv4: martian source 192.168.1.100 from 34.210.182.212, on dev eno1
Aug 8 17:16:28 Deluxe kernel: [12972.603572] ll header: 00000000: d0 17 c2 ac 64 4b c4 e9 84 48 79 32 08 00 ....dK...Hy2..
Aug 8 17:16:28 Deluxe kernel: [12972.910801] IPv4: martian source 192.168.1.100 from 34.210.182.212, on dev eno1
Aug 8 17:16:28 Deluxe kernel: [12972.910822] ll header: 00000000: d0 17 c2 ac 64 4b c4 e9 84 48 79 32 08 00 ....dK...Hy2..
Aug 8 17:16:28 Deluxe kernel: [12973.230932] IPv4: martian source 192.168.1.100 from 34.210.182.212, on dev eno1
Aug 8 17:16:28 Deluxe kernel: [12973.230953] ll header: 00000000: d0 17 c2 ac 64 4b c4 e9 84 48 79 32 08 00 ....dK...Hy2..
该行中的第一个 MAC 地址ll header
是我的网卡,第二个是路由器上的以太网接口。
连接之前我的路由表如下所示:
[2020-08-08 ☱ 18:35 ☴]$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eno1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
连接后不久,它看起来像这样:
[2020-08-08 ☱ 18:35 ☴]$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.25.40.1 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eno1
10.25.40.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
128.0.0.0 10.25.40.1 128.0.0.0 UG 0 0 0 tun0
185.228.19.148 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
倒数第二个主机 IP 是 VPN 网关。适配器tun0
的配置如下:inet 10.25.40.244 netmask 255.255.255.0 destination 10.25.40.244
三到五分钟后,火星交通将会减弱并且很少出现。
我已经测试过在openvpn
没有路由器的情况下通过连接(直接连接到我的调制解调器),并且发生了同样的情况。
我在这里有点冒险,但看起来,当路由发生突然变化(如用户启动的 VPN 连接时发生)时,已建立的/相关的连接会持续存在并被视为无效而被丢弃。随着时间的推移,这些联系就会消失。
问题:
- 我对火星数据包产生原因的理解正确吗?
- 如果我想避免丢失这些数据包,我该怎么做?例如,我可以使用
nat
或mangle
表iptables
将这些数据包定向到tun
接口吗?
答案1
- 你的理解是正确的。
- 就我而言,我只是停止记录此类数据包。即使这是一次攻击,它也不会起作用,因为路由会阻止它成功:
net.ipv4.conf.all.log_martians = 0