我有一台安装了 2 个 NIC 的小型 Haproxy 服务器。操作系统是 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
知识产权
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
答案1
如果您希望到 192.168.0.0/24 的流量来自 192.168.0.2,那么您需要添加一条规则:
ip rule add prio 32761 to 192.168.0.0/24 lookup eth1table
现在,没有规则匹配,路由落到具有192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.1 metric 100
第一个最具体条目的主路由表,因此 eth0 将使用 IP 地址 192.168.0.1。
答案2
问题最终与 NetworkManager 以某种方式控制路由有关。卸载 NetworkManager,清理接口配置文件,一切开始按预期运行,包括表格和规则。
来源:https://www.howtoforge.com/community/threads/first-ip-ok-second-ip-times-out.38613/