我有一个带有 2 个 NIC(eth0 和 eth1)的 CentOS 7 系统。
NIC 配置:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.43.96.210 netmask 255.255.255.192 broadcast 10.43.96.255
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 146.81.34.150 netmask 255.255.255.128 broadcast 146.81.34.255
我当前的路由表:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.43.96.193 0.0.0.0 UG 100 0 0 eth0
10.43.96.192 0.0.0.0 255.255.255.192 U 100 0 0 eth0
146.81.34.0 0.0.0.0 255.255.255.128 U 0 0 0 eth1
146.81.34.128 146.81.34.254 255.255.255.128 UG 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
NIC eth0 连接到 10.43.96.x 网络,默认网关(10.43.96.193)用于从 10.43.96.x 网络内的计算机到公共互联网的传出连接。
NIC eth1 连接到 146.81.34.128/25 网络(NIC IP 146.81.34.150、网络掩码 255.255.255.128、网关 146.81.34.254,这些由客户定义)并且需要访问 IP 为 146.81.34.11 的服务器。
146.81.0.0/16 网络的其他服务器需要通过 ping 访问我的服务器 (146.81.34.150)(通过网关 146.81.34.254)。例如,146.81.23.95 的服务器需要 ping 我的服务器。我不太了解该网络中的网络和路由配置详情,我被告知使用其网关 146.81.34.254。
当前问题:
客户说 146.81.0.0/16 网络(146.81.xx)上的其他服务器可以正确访问 146.81.34.128/25 网络(因此可以 ping 到我的 146.81.34.150 服务器)。这样就没问题了。
但是,146.81.0.0/16 网络中的其他服务器现在尝试使用我的默认网关 (10.43.96.193) 通过我的服务器访问其他 IP 地址(146.81.34.128/25 以外的其他网络),这应该被阻止。
问题:
我应该如何阻止来自 146.81.0.0/16 网络中的服务器通过此服务器转发连接?它们不应该使用我服务器上的默认网关 (10.43.96.193)。
答案1
我应该如何阻止 146.81.0.0/16 网络中的服务器通过此服务器转发连接?
最简单的选择是完全地通过 sysctl 禁用 IP 转发:
net.ipv4.conf.all.forwarding=0
net.ipv6.conf.all.forwarding=0
如果一些有些类型的流量必须通过服务器转发,但其他类型的流量则不需要,请使用防火墙 - 只需添加规则来接受想要的流量,并拒绝(或丢弃)其余流量。
- iptables 有一个
FORWARD
正是为了这个目的而设立的链。 - nft 同样有
forward
钩子。