我是网络领域的新手。我的网络服务器网络配置有问题(操作系统是Centos)。 我有2个NIC(eth0 + eth2 - 物理)运行2个公共IP,它们具有相同的子网,相同的网关。 当我配置nginx来监听这两个网卡时,一切正常。但是当我监控流量时,所有流量都只在eth0上,而在eth2上没有。 我的问题是:如何配置以便流量进入NIC,也可以在该NIC上运行? 这是我的以太网卡配置:
DEVICE="eth0"
ONBOOT=yes
BOOTPROTO=static
IPADDR=x.x.x.38
PREFIX=27
GATEWAY=x.x.x.x.33
DNS1=8.8.8.8
DNS2=8.8.4.4
NAME="System eth0"
DEVICE="eth2"
ONBOOT=yes
BOOTPROTO=static
IPADDR=x.x.x.39
PREFIX=27
GATEWAY=x.x.x.33
DNS1=8.8.8.8
DNS2=8.8.4.4
NAME="System eth2"
这是我的路线-n结果
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.14.8.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
y.z.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
y.z.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
y.z.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 eth2
0.0.0.0 x.x.x.33 0.0.0.0 UG 0 0 0 eth0
希望你能提供帮助,谢谢先进!
答案 0 :(得分:1)
在Linux中,路由仅通过查看目标地址来执行,因此数据包将遵循可用于到达数据包目的地的任何路由,而不考虑源地址。
您需要的行为需要选择路由,不仅取决于目标地址,还取决于源地址 - 有时称为源敏感路由或 SADR (源地址相关路由)。在Linux下实现源敏感路由的最便携方式是使用ip rule
和ip route ... table ...
命令在多个路由表中定义路由规则。
答案 1 :(得分:0)
可能即使使用NAT也可以解决问题
ip tuntap add dev tap0 mode tap
ip tuntap add dev tap1 mode tap
然后,您可以为这些设备分配单独的IP地址:
ifconfig tap0 10.10.10.1 netmask 255.255.255.255
ifconfig tap1 10.10.10.2 netmask 255.255.255.255
最后 - 将传入流量重定向到特定虚拟设备
iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-destination 10.10.10.1
iptables -t nat -A PREROUTING -i eth2 -j DNAT --to-destination 10.10.10.2
在这种情况下,所有流量将被定义路由到它来自的接口。