
我有一個 CentOS 7 系統,有 2 張網路卡(eth0 和 eth1)。
網路卡配置:
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 網路內的電腦到公共 Internet 的傳出連線。
NIC eth1 連接到 146.81.34.128/25 網路(NIC IP 146.81.34.150、網路遮罩 255.255.255.128、gw 146.81.34.254,這些由客戶定義的伺服器 1.34.134.
來自 146.81.0.0/16 網路的其他伺服器需要透過 ping(透過網關 146.81.34.254)到達我的伺服器(146.81.34.150)。例如,位於 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
鉤子。