我们最近开始为 DMZ 服务器添加第二个 NIC,用于管理网络。服务器应该通过 DMZ NIC(eth0、NAT 和 10.xxx)执行所有操作,除非尝试通过 eth1 访问/回复内部网络(所有其他 RFC1918)。
以下解决方案(据我所知,有效)可以吗?我们在非对称路由和 rp_filter 方面遇到了一些困难(并尝试了本指南http://jensd.be/468/linux/two-network-cards-rp_filter)但最终我还是选择了静态路由,这似乎更简单、更干净……但这让我怀疑我是否遗漏了什么。这种方法有什么问题吗?
# DMZ
> cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
GATEWAY=10.0.0.1
IPADDR=10.0.0.2
NETMASK=255.255.255.0
IPV4_FAILURE_FATAL="yes"
IPV6INIT="no"
HWADDR="xyz"
# MNG
> cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="no"
NAME="eth1"
DEVICE="eth1"
ONBOOT="yes"
IPADDR=192.168.35.2
NETMASK=255.255.255.0
GATEWAY=192.168.35.1
IPV4_FAILURE_FATAL="yes"
IPV6INIT="no"
HWADDR="wxz"
# Statics
> cat /etc/sysconfig/network-scripts/route-eth1
192.168.0.0/16 via 192.168.35.1
172.16.0.0/12 via 192.168.35.1
# rp_filter and ip r
> sysctl -a|grep "\.rp_filter"
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth1.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 0
> ip r
default via 10.0.0.1 dev eth0
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.2
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth1 scope link metric 1003
172.16.0.0/12 via 192.168.35.1 dev eth1
192.168.0.0/16 via 192.168.35.1 dev eth1
192.168.35.0/24 dev eth1 proto kernel scope link src 192.
非常感谢
答案1
您的 NIC 中只有一个应该定义GATEWAY=
。这是所有发往 Internet 的数据包的默认网关。目前,它们都已定义GATEWAY=
,因此您有两个默认路由,而数据包实际尝试使用哪一个路由是不可预测的。这意味着您将遇到各种连接问题。
因为你说 eth1 上的流量应该不是访问互联网,但只能访问特定网络,您应该GATEWAY=
从该接口中删除。