Rootop 服务器运维与web架构

非对称路由

ubuntu双网卡,网卡1为一个网段(192.168.1.10),网卡2为另一个网段(192.168.2.10),网卡2不配置网关,通过网卡2的ip连接服务器ssh服务,为什么可以连接?

在 Ubuntu 系统中,如果有两个网卡 (NICs),每个网卡连接到不同的网络,并且只有一个网卡配置了网关,那么通过未配置网关的网卡进行连接时,数据包的返回路径可能会通过配置了网关的网卡返回。
这通常被称为 “异路由” 或 “非对称路由”。

# 解释

网卡1 (eth0): IP 192.168.1.10/24, 网关 192.168.1.1
网卡2 (eth1): IP 192.168.2.10/24, 没有配置网关

# 连接过程
从外部网络的某个主机 (IP 192.168.6.20) 尝试通过 eth1 (192.168.2.10) 连接到服务器的 SSH 服务。
外部主机发送一个 SSH 请求到 192.168.2.10。这个数据包到达 eth1 并被处理。
服务器收到数据包并生成响应。

# 数据包的返回路径
由于 eth1 没有配置网关,默认情况下,服务器会根据其路由表决定如何返回数据包。
路由表中通常有一个默认网关指向 eth0 的网关 192.168.1.1。
如果没有特定路由指向 192.168.6.20,服务器会通过 eth0 上的默认网关将响应包发回。

可以使用 ip route show 查看路由表:
输出如下:

default via 192.168.1.1 dev eth0 proto static metric 100 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10 metric 100 
192.168.2.0/24 dev eth1 proto kernel scope link src 192.168.2.10 metric 100 

在这种配置中,没有明确的路由指向 192.168.6.20,默认路由通过 192.168.1.1。

# 解决办法,策略路由
将从192.168.2.10发出的数据从192.168.2.1网关发送出去。

ip rule add from 192.168.2.10/32 table 100
ip route add default via 192.168.2.1 dev eth1 table 100

这样配置后两个网卡都可以用,并且实现了源进源出。

注意:
在linux发行版中要注意rp_filter内核参数,像centos默认会设置为1,严格模式,禁止进出路径不一致,而ubuntu默认为2,宽松模式,即数据包只要能回即可。

此问题对应华为usg防火墙中的源进源出。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/5466.html

作者:Venus

服务器运维与性能优化

评论已关闭。