首先,我只是在学习 Linux 和网络,所以请假设我拥有最少的知识!
大约一周前,我正在编写一个小型 Python 脚本,该脚本涉及从 Kali Linux 终端 ping 设备,一切运行良好。现在我出去吃了太多的圣诞节食物,回来后似乎无法从 Linux VM ping 网络上的任何设备,而之前它运行良好。
我能够从主机 Windows 计算机顺利 ping 到这些目标设备,尝试了 Linux/Windows 并行,Windows 可以工作,Linux/VM 不行。我认为唯一在工作和不工作之间发生变化的是我安装了 Nordvpn 虚拟机,我测试了 Nordvpn 开启和关闭时的 ping,但都不起作用。
我还运行了 wireshark,就像我从虚拟机执行 ping 一样,希望看到流量,但什么也没出现。所以我假设它甚至还没有离开虚拟机?看到了
我已经研究了以下领域;
是否配置
运行 ifconfig 来查看是否有任何东西跳出来。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.71.XXX netmask 255.255.255.0 broadcast 192.168.71.XXX
ether 00:0c:29:47:d5:91 txqueuelen 1000 (Ethernet)
RX packets 560 bytes 509247 (497.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 258 bytes 29173 (28.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 22 bytes 1100 (1.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22 bytes 1100 (1.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
nordtun: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.8.0.XX netmask 255.255.0.0 destination 10.8.0.XX
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 76 bytes 17741 (17.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 105 bytes 7587 (7.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
对我来说,第一件奇怪的事情是 eth0 IP 的前三个八位字节与我的网络不匹配,我认为这可能会导致路由问题或类似问题?
还注意到 nord 部分的 inet 和目的地是相同的,这对我来说似乎很奇怪,但我认为是正确的?
IP 表
我想看看 iptables 并查看是否有什么原因导致数据包被丢弃。
Chain INPUT (policy ACCEPT 612 packets, 281K bytes)
pkts bytes target prot opt in out source destination
843 778K ACCEPT 0 -- eth0 * 0.0.0.0/0 0.0.0.0/0 connmark match 0xe1f1 /* nordvpn */
28 31723 DROP 0 -- eth0 * 0.0.0.0/0 0.0.0.0/0 /* nordvpn */
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 716 packets, 75917 bytes)
pkts bytes target prot opt in out source destination
944 130K CONNMARK 0 -- * eth0 0.0.0.0/0 0.0.0.0/0 mark match 0xe1f1 /* nordvpn */ CONNMARK save
944 130K ACCEPT 0 -- * eth0 0.0.0.0/0 0.0.0.0/0 connmark match 0xe1f1 /* nordvpn */
236 25565 DROP 0 -- * eth0 0.0.0.0/0 0.0.0.0/0 /* nordvpn */
虽然不是 iptables 大师,但我认为 OUTPUT 表中的最后一个链可能导致 icmp ping 被丢弃,因此我将其删除并测试了 ping 命令。仍然不起作用。然后我将 DROP 指令返回到表。
路由表
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.71.2 0.0.0.0 UG 100 0 0 eth0
10.8.0.0 0.0.0.0 255.255.0.0 U 0 0 0 nordtun
192.168.71.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
我觉得这里没有什么奇怪的。
IP 地址
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:47:d5:91 brd ff:ff:ff:ff:ff:ff
inet 192.168.18.16/24 brd 192.168.18.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 192.168.71.129/24 brd 192.168.71.255 scope global dynamic noprefixroute eth0
valid_lft 416sec preferred_lft 416sec
6: nordtun: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 10.8.0.48/16 scope global nordtun
valid_lft forever preferred_lft forever
eth0 下有两个不同的 IP,YYY 是机器上原来的 IP,XXX 是我最近添加的,以尝试解决问题。
路由
default via 192.168.71.2 dev eth0 proto dhcp src 192.168.71.129 metric 100
10.8.0.0/16 dev nordtun proto kernel scope link src 10.8.0.48
192.168.71.0/24 dev eth0 proto kernel scope link src 192.168.71.129 metric 100
.71.2 不在我的家庭网络上,不确定为什么它不同,但我认为这是问题的原因。
ip 规则
0: from all lookup local
32764: from all lookup main suppress_prefixlength 0
32765: not from all fwmark 0xe1f1 lookup 205
32766: from all lookup main
32767: from all lookup default
老实说,我不确定这是什么,但我会稍微了解一下。
iptables-保存
# Generated by iptables-save v1.8.10 (nf_tables) on Tue Jan 2 03:54:30 2024
*filter
:INPUT ACCEPT [662:290939]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [784:80525]
-A INPUT -i eth0 -m connmark --mark 0xe1f1 -m comment --comment nordvpn -j ACCEPT
-A INPUT -i eth0 -m comment --comment nordvpn -j DROP
-A OUTPUT -o eth0 -m mark --mark 0xe1f1 -m comment --comment nordvpn -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A OUTPUT -o eth0 -m connmark --mark 0xe1f1 -m comment --comment nordvpn -j ACCEPT
-A OUTPUT -o eth0 -m comment --comment nordvpn -j DROP
COMMIT
# Completed on Tue Jan 2 03:54:30 2024
鳴
决定也运行ip n
并得到以下结果。它显然没有显示任何我知道的设备。
192.168.71.2 dev eth0 lladdr 00:50:56:fd:a9:30 REACHABLE
出于好奇,我尝试从我的 Windows 主机 ping 上述 IP,但没有得到任何回应,但这并不奇怪。
ip 路由显示表 xxx
尝试查找表 205(如上所述),但显示为空白。能够调出 205。
local 10.8.0.11 dev nordtun proto kernel scope host src 10.8.0.11
broadcast 10.8.255.255 dev nordtun proto kernel scope link src 10.8.0.11
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
local 192.168.18.16 dev eth0 proto kernel scope host src 192.168.18.16
broadcast 192.168.18.255 dev eth0 proto kernel scope link src 192.168.18.16
local 192.168.71.129 dev eth0 proto kernel scope host src 192.168.71.129
broadcast 192.168.71.255 dev eth0 proto kernel scope link src 192.168.71.129
任何帮助,即使只是指出正确的方向,我都会非常感激!