事实证明,iptables 对我来说是一个非常复杂的工具。我尝试执行以下操作:
- 接受 80、443、22 上的所有数据包
- 转发从 80 到 8000 收到的数据包
- 在端口 8096 上仅接受来自一个特定 IP 地址的数据包
问题是,目前只有 SSH 可以工作,Web 服务器没有转发任何流量。注意:Web 服务器确实在端口 8000 上运行。curl localhost:8000
输出 html。
这是我的规则/etc/iptables/rules.v4
root@mybox:~# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 8000
REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 8000
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
和
root@mybox:~# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination