修改路由表通过 WiFi 接口路由出站数据包(ssh 除外)

修改路由表通过 WiFi 接口路由出站数据包(ssh 除外)

我使用的是远程计算机,我使用 SSH 和静态 IP 来连接它。我想知道如何编辑路由表以使用无线接口退出 Internet,但仍然能够使用 SSH 和静态 IP 连接到它。

我尝试更改无线接口路由上的度量值,但失去了连接,所以我想我将其更改为通过 WiFi 接口路由所有内容。

这是我的远程计算机的实际路由表(显然我已经混淆了一些 IP 地址):

# ip route list
default via 193.*.*.1*9 dev eth0 proto static metric 100 
default via 192.168.0.1 dev wlan3 proto static metric 600 
default via 192.168.0.1 dev wlan1 proto static metric 601 
192.168.0.0/24 dev wlan3 proto kernel scope link src 192.168.0.127 metric 600 
192.168.0.0/24 dev wlan1 proto kernel scope link src 192.168.0.143 metric 601 
193.*.*.1*8/25 dev eth0 proto kernel scope link src 193.*.*.1*7 metric 100

这里是route -n 的输出:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         193.*.*.1*9     0.0.0.0         UG    100    0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    600    0        0 wlan3
0.0.0.0         192.168.0.1     0.0.0.0         UG    601    0        0 wlan1
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlan3
192.168.0.0     0.0.0.0         255.255.255.0   U     601    0        0 wlan1
193.*.*.1*8     0.0.0.0         255.255.255.128 U     100    0        0 eth0

总而言之,这个想法是通过 eth0 接口路由 SSH 流量,并通过 wlan3 路由其余流量。

答案1

要验证我是否正确理解您的问题:您正在使用一台带有 2 个 WLAN 接口和 1 个 LAN 接口的本地计算机。在 LAN 接口后面,还有另一台您想要使用静态 IP 访问的计算机。所有其他流量应通过 WLAN 接口。 WLAN 接口通过 DHCP 获取其地址。

如果这是正确的,default除了该网段的每条规则(“到达静态地址下的远程服务器”)之外,您还需要针对其中一个 WLAN 接口(“使用无线接口退出到互联网”)制定一条规则。 WLAN 接口的路由可能是自动设置的,只要它们具有不同的优先级,并且其中两个接口具有不同的优先级,并且您知道您将只使用一个 WLAN 接口,则不会有任何影响。

所以路由表应该是这样的:

default via 192.168.0.1 dev wlan3 proto static metric 600 
default via 192.168.0.1 dev wlan1 proto static metric 601 
192.168.0.0/24 dev wlan3 proto kernel scope link src 192.168.0.127 metric 600 
192.168.0.0/24 dev wlan1 proto kernel scope link src 192.168.0.143 metric 601 
193.*.*.1*8/25 dev eth0 proto kernel scope link src 193.*.*.1*7 metric 100

假设这些是默认指标,并假设您要通过 SSH 访问的服务器的端口号为 193。.1*8地址(你没说)。如果没有,您需要为服务器地址添加一条附加规则。

换句话说,只要做

ip route del 193.*.*.1*9 dev eth0 proto static metric 100 

(当然,需要正确的 IP 地址)。

根据 LAN 接口获取其地址的方式(网络管理器?),您可以自动执行此操作。

编辑

所以图片是这样的:

+--------------+    +---------------------+    +-------------+               
|        eth0  |----| Some other computer |....| remote host |
| Laptop       |    +---------------------+    +-------------+
|        wlan0 |    +---------+
| Laptop wlan1 |::::| Some AP |
+--------------+    +---------+

它是否正确?如果没有,请澄清购买编辑您的问题。像上面这样的图片会有帮助。

我知道您希望保护公共 IP 地址,但这使得评估情况变得困难。

假设您要连接的主机ssh具有公共 IP 地址1.2.3.4。在您的笔记本电脑上,WLAN 的地址范围192.168.0.*/24为 gateway 192.168.0.1,您的 LAN 的地址范围192.168.1.*/24为 gateway 192.168.1.1。这可能比您的数字更现实(因为以 192.168 开头的所有内容都在专用 IP 范围内;您的 LAN 网段不太可能有公共 IP 范围)。鉴于此,您的路由表在笔记本电脑上应该类似于

default via 192.168.0.1 dev wlanX
1.2.3.4 via 19.168.1.1 dev eth0
192.168.0.0/24 dev wlanX ...
192.168.1.0/24 dev eth0 ...

我们对另一台计算机或 ssh 主机上的路由表不感兴趣。

路由由更具体的前缀匹配,因此这表示“将到 1.2.3.4 的流量发送到 LAN 网关,通过 WLAN 或 LAN 将本地网段的流量发送到 WLAN 网关”。您可以通过以下方式验证ip route get

$ ip route get 1.2.3.4
1.2.3.4 via 192.168.1.1 dev eth0
$ ip route get 1.2.3.5
1.2.3.5 via 192.168.0.1 dev wlanX

您要么需要根据您的情况进行调整,要么更详细地解释您的本地设置。提供192.168.*.*和形式的 IP 地址是安全的10.*.*.*,这些是许多人使用的专用网络地址,不能用于识别您或您的计算机的身份。

相关内容