新的 iptables 规则未显示

新的 iptables 规则未显示

我正在尝试将iptables端口 80 上的传入流量转发到在另一个 IP 地址和端口上运行的 Web 服务器。这似乎没有什么区别,Web 服务器在端口 3000 上的 Docker 容器中运行。以下是我到目前为止所做的。

将 80 上的传入流量转发到 Web 服务器:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 172.17.x.x:3000

重新映射从 Web 服务器返回的流量,以便客户端看到正确的源地址:

sudo iptables -t NAT POSTROUTING -s [web server IP address] -j SNAT --to-source 10.0.y.y

但是当我使用 查看我的规则时iptables -L,两者都没有显示,我无法从主机的公共地址访问该站点。我的主机运行的是 Ubuntu 14.04 (Trusty),并且已启用端口转发。

答案1

检查:
a) 您的本地 Web 服务器是否使用防火墙作为默认网关
b) 防火墙中的端口转发

cat /proc/sys/net/ipv4/ip_forward

c) 规则...

# iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.2:8080
# iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 8080 -j ACCEPT

这两条规则很简单。第一条规定所有到端口 80 的传入 tcp 连接都应发送到内部计算机 192.168.1.2 的端口 8080。然后,我们通过第二条规则接受从使用 publich IP 连接到 Internet 的 eth0 到端口 80 的传入连接。从“iptables”部分中的进程路径,数据包还将通过 FORWARD 链。我们在 FORWARD 链中添加第二条规则,以允许将数据包转发到 192.168.1.2 的端口 8080。

系统教程和其他手册...

相关内容