我想了解我使用的 VPN 是如何工作的。在本例中是 nordvpn,但问题应该与供应商无关,重点关注底层 Linux 机制和工具,以检查情况,而不依赖任何供应商工具。
首先,我必须安装一个应用程序并使用 sudo 运行它。它执行了一些操作,现在我有了 VPN 连接。我不知道它是否安装了内核模块,或者它只是用户空间。
创建了一个新的网络接口:
$ ip a
6: nordlynx: <POINTOPOINT,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.5.0.2/32 scope global nordlynx
valid_lft forever preferred_lft forever
但是路由表并没有改变:
$ ip route show
default via 10.1.10.1 dev wlp3s0 proto dhcp metric 20600
10.1.10.0/24 dev wlp3s0 proto kernel scope link src 10.1.10.210 metric 600
169.254.0.0/16 dev wlp3s0 scope link metric 1000
它对防火墙做了一些事情:
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere connmark match 0xe1f1 /* nordvpn */
ACCEPT all -- anywhere anywhere connmark match 0xe1f1 /* nordvpn */
ACCEPT all -- anywhere anywhere connmark match 0xe1f1 /* nordvpn */
DROP all -- anywhere anywhere /* nordvpn */
DROP all -- anywhere anywhere /* nordvpn */
DROP all -- anywhere anywhere /* nordvpn */
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
CONNMARK all -- anywhere anywhere mark match 0xe1f1 /* nordvpn */ CONNMARK save
ACCEPT all -- anywhere anywhere connmark match 0xe1f1 /* nordvpn */
CONNMARK all -- anywhere anywhere mark match 0xe1f1 /* nordvpn */ CONNMARK save
ACCEPT all -- anywhere anywhere connmark match 0xe1f1 /* nordvpn */
CONNMARK all -- anywhere anywhere mark match 0xe1f1 /* nordvpn */ CONNMARK save
ACCEPT all -- anywhere anywhere connmark match 0xe1f1 /* nordvpn */
DROP all -- anywhere anywhere /* nordvpn */
DROP all -- anywhere anywhere /* nordvpn */
DROP all -- anywhere anywhere /* nordvpn */
我的问题是:
- 如果防火墙被用于路由,那么路由表和防火墙表会不会互相干扰,造成混乱?
- 如果这
iptables
只是一种误导,那么在后台还可以运行哪些其他机制来实现 VPN 连接,我该如何检查它们(使用 CLI 命令)?