IP规则和表格混淆

使用openVPN后,我有一个新的TUN设备。 我也在网上按照一些步骤允许传入传输到我的服务器,但是,我不明白它是如何工作的。

ip addr:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 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 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether b8:27:eb:e2:97:22 brd ff:ff:ff:ff:ff:ff inet 192.168.0.129/24 brd 192.168.0.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::de8d:8f16:39a0:8bb9/64 scope link valid_lft forever preferred_lft forever 3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000 link/ether b8:27:eb:b7:c2:77 brd ff:ff:ff:ff:ff:ff inet6 fe80::6877:4a6e:7067:da26/64 scope link tentative valid_lft forever preferred_lft forever 4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.8.8.118 peer 10.8.8.117/32 scope global tun0 valid_lft forever preferred_lft forever 

ip规则:

 0: from all lookup local 32765: from 192.168.0.129 lookup 128 32766: from all lookup main 32767: from all lookup default 

128桌:

 default via 192.168.0.1 dev eth0 10.8.8.117 dev eth0 scope link 

主表:

 0.0.0.0/1 via 10.8.8.117 dev tun0 default via 192.168.0.1 dev eth0 metric 202 10.8.8.1 via 10.8.8.117 dev tun0 10.8.8.117 dev tun0 proto kernel scope link src 10.8.8.118 128.0.0.0/1 via 10.8.8.117 dev tun0 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.129 metric 202 198.148.86.170 via 192.168.0.1 dev eth0 

本地表:

 local 10.8.8.118 dev tun0 proto kernel scope host src 10.8.8.118 broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 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 broadcast 192.168.0.0 dev eth0 proto kernel scope link src 192.168.0.129 local 192.168.0.129 dev eth0 proto kernel scope host src 192.168.0.129 broadcast 192.168.0.255 dev eth0 proto kernel scope link src 192.168.0.129 

有人可以解释一个数据包将采取什么路线? 我主要对Table 128感到困惑。如果没有这个规则和表格,当VPN运行时,我无法从我们的networking外部SSH连接或连接到我的机器上的服务器。 如何添加这两个规则让我做到这一点? 他们在说什么?

在没有NAT的世界中,没有有状态的防火墙,并且每个接口都有可公开路由的IP地址,这就没有必要。 但是,我们不住在这个世界。 我们生活在一个典型的连接通常经过几个防火墙和NAT设备的世界。

基本上你有一个不对称的路由问题 。

非对称路由本身并不是一个问题,但在路由path中使用networking地址转换(NAT)或防火墙时会导致问题。

当客户端设备与你的主机build立ssh连接时,它将在tcp / ip头中有src ip / port destination ip / port。 回复数据包将有用于回复的ssh接口的src ip / port和远程主机的目的地址/端口。 在你的例子中,你有两种方法可以让传入的数据包通过,而默认的传出路由与使用的传入地址是不同的。 如果没有你添加的规则,发送回复数据包,它将有一个不同的src ip / port,那么ssh客户端的防火墙会根据发出的数据包发送什么内容。 由于传出数据包中的目的地与回复中的源地址不同,因此可能会被防火墙拒绝,或者可能与NAT状态表中的内容不匹配。

您所使用的规则基本上会强制传入的系统从收到请求的接口回复,这意味着所有的地址都将正确匹配,并且数据包将通过任何防火墙被允许。