我想将传入流量重定向到我的服务器(其中 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)
。
Drop 示例
- 陌生客户端(66.66.66.66)尝试连接
SERVER IP (172.26.0.99)
- 交通状况
DROPPED
答案1
如果我理解正确的话,你想转发全部流量从 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"