HAProxy 源 IP 使用错误的接口/IP

HAProxy 源 IP 使用错误的接口/IP

我有一台安装了 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/

相关内容