iptables:通过伪装将请求转发到不同的本地端口

iptables:通过伪装将请求转发到不同的本地端口

我在端口 80 上运行一个 Web 应用程序,对于某些 API,需要将源 IP 列入白名单。因为我的 /19 网络中的任何人都应该能够使用这些 API,并且因为此 Web 应用程序不支持用于白名单的 CIDR 表示法,所以我正在考虑以下设置:

  • 让我的 /19 网络中的任何人通过端口 1337 连接到我的服务器。
  • 在 Linux Web 服务器上,使用伪装将流量从端口 1337 重新路由到端口 80
  • 在我的网络应用程序中,仅将 IP 127.0.0.1 列入白名单,因为对于网络应用程序,所有流量都来自本地主机
  • 确保来自我的 API 的响应返回源

对于此用例,iptable 规则会是什么样子?

答案1

默认情况下,从标准 NIC ( eth0) 到环回接口 ( lo) 的端口转发处于禁用状态。删除任何以前的(损坏的)iptables 规则并执行以下命令:

# Forward any traffic destined to TCP 1337 on eth0 to 80 on loopback if source network is X.X.X.X/19
$ sudo iptables -t nat -I PREROUTING -p tcp -i eth0 -s X.X.X.X/19 --dport 1337 -j DNAT --to-destination 127.0.0.1:80
# Then allow forwarding from standard NIC to loopback (assuming eth0 is the standard NIC)
$ sudo sysctl -w net.ipv4.conf.eth0.route_localnet=1

相关内容