Linux

將特定的外部流量轉發到 LAN 伺服器

  • October 12, 2021

我想將傳入流量重定向到 iptables 正在工作的伺服器,再重定向到 LAN 中的另一台伺服器。但是,如果傳入流量來自特定的外部 IP 地址,我只希望它能夠工作。否則,流量應該被丟棄。

讓我舉一個例子來澄清它:

  • 外部客戶端IP:88.88.88.88
  • 伺服器IP(同一區域網路):172.26.0.99
  • 目標IP(在同一區域網路中):172.26.0.11

重定向範例

  1. 客戶端 (88.88.88.88) 連接到SERVER IP (172.26.0.99)
  2. 流量通過隧道傳輸到Destination IP (172.26.0.11).

刪除範例

  1. 陌生人客戶端(66.66.66.66)嘗試連接到SERVER IP (172.26.0.99)
  2. 交通是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"

引用自:https://serverfault.com/questions/1080060