我有一个小型 Haproxy 服务器,设置了 2 个 NIC。操作系统是 CentOS7,我根据 CentOS 文档在同一个子网上配置了两个 NIC。
— 192.168.0.1, 192.168.0.2 ---- 都在 192.168.0.0/24 上 192.168.0.1 用于管理和 web gui,192.168.0.2 用于 LB 流量。
进入 LB 的流量会到达 192.168.0.2 地址,但似乎是从 192.168.0.1 地址流出到后端服务器。我尝试在配置中指定“源 IP”无济于事。
版本是 1.8.16。
如果我从 Linux 中的 LB CLI 执行 telnet,路由似乎工作正常,因此 LB 应用程序本身似乎没有在正确的接口/IP 上发出。
EDIT-1:后端服务器与 LB (192.168.0.0/24) 位于同一子网中。
ip-a
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 mq state UP group default qlen 1000
link/ether [mac screened] brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/24 brd 192.168.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether [mac screened] brd ff:ff:ff:ff:ff:ff
inet 192.168.0.2/24 brd 192.168.0.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
以下路由和 ip 规则已手动添加(根据指南https://access.redhat.com/solutions/30564)
# ip route show table eth0table
default via 192.168.0.0 dev eth0
192.168.0.0/24 dev eth0 scope link src 192.168.0.1
# ip route show table eth1table
default via 192.168.0.0 dev eth1
192.168.0.0/24 dev eth0 scope link src 192.168.0.2
ip规则:
0: from all lookup local
32762: from all to 192.168.0.2 lookup eth1table
32763: from 192.168.0.2 lookup eth1table
32764: from all to 192.168.0.1 lookup eth0table
32765: from 192.168.0.1 lookup eth0table
32766: from all lookup main
32767: from all lookup default
ip ro
default via 192.168.0.0 dev eth0 proto static metric 100
default via 192.168.0.0 dev eth1 proto static metric 101
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.1 metric 100
192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.2 metric 101
如果您希望到 192.168.0.0/24 的流量来自 192.168.0.2,那么您需要添加一条规则:
就像现在一样,没有规则匹配,并且路由落入具有
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.1 metric 100
作为第一个最具体条目的主路由表,因此 eth0 将与 IP 地址 192.168.0.1 一起使用。问题最终与 NetworkManager 以某种方式控制路由有关。卸载了 NetworkManager,清理了界面配置文件,事情开始按预期运行,包括表格和规则。
来源:https ://www.howtoforge.com/community/threads/first-ip-ok-second-ip-times-out.38613/