Linux
將特定的外部流量轉發到 LAN 伺服器
我想將傳入流量重定向到 iptables 正在工作的伺服器,再重定向到 LAN 中的另一台伺服器。但是,如果傳入流量來自特定的外部 IP 地址,我只希望它能夠工作。否則,流量應該被丟棄。
讓我舉一個例子來澄清它:
- 外部客戶端IP:88.88.88.88
- 伺服器IP(同一區域網路):172.26.0.99
- 目標IP(在同一區域網路中):172.26.0.11
重定向範例
- 客戶端 (88.88.88.88) 連接到
SERVER IP (172.26.0.99)
- 流量通過隧道傳輸到
Destination IP (172.26.0.11)
.刪除範例
- 陌生人客戶端(66.66.66.66)嘗試連接到
SERVER IP (172.26.0.99)
- 交通是
DROPPED
如果我理解正確,您希望將所有流量從 88.88.88.88 轉發到受保護的伺服器 172.26.0.11。下面是一個使用 NAT 的範例:
sysctl net.ipv4.ip_forward=1 iptables -t nat -A PREROUTING -i <wan-if> -s 88.88.88.88 -j DNAT --to-destination 172.26.0.11 iptables -t nat -A POSTROUTING -s 88.88.88.88 -d 172.26.0.11 -j SNAT --to-source 172.26.0.99 iptables -A FORWARD -s 88.88.88.88 -d 172.26.0.11 -j ACCEPT
或者,基於每個埠轉發,使用
ipvs
或 SystemD 套接字或iptables -j REDIRECT
設置轉發和防火牆埠。ipvs 和 iptables 的範例:sysctl net.ipv4.vs.conntrack=1 ipvsadm -A -t "172.26.0.99:<port>" -s rr ipvsadm -a -t "172.26.0.99:<port>" -r "172.26.0.11:<port>" -m iptables -A INPUT -s 88.88.88.88 -j ACCEPT -m comment --comment "Allow 88.88.88.88" iptables -A INPUT -j DROP -m comment --comment "Catch-all drop"