Get*_*ree 2 linux firewall iptables port-forwarding
在我拥有的 CentOS 服务器中,我想将端口 8080 转发到第三方网络服务器。
所以我添加了这个规则:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination thirdparty_server_ip:80
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用。
为了调试这个过程,我添加了这两条 LOG 规则:
iptables -t mangle -A PREROUTING -p tcp --src my_laptop_ip --dport ! 22 -j LOG --log-level warning --log-prefix "[_REQUEST_COMING_FROM_CLIENT_] "
iptables -t nat -A POSTROUTING -p tcp --dst thirdparty_server_ip -j LOG --log-level warning --log-prefix "[_REQUEST_BEING_FORWARDED_] "
Run Code Online (Sandbox Code Playgroud)
(这--dport ! 22部分只是为了过滤掉 SSH 流量,以免我的日志文件被淹没)
根据此页面,mangle/PREROUTING链是第一个处理传入数据包的nat/POSTROUTING链,而链是最后一个处理传出数据包的链。
并且由于nat/PREROUTING链位于其他两个的中间,因此三个规则应该这样做:
mangle/PREROUTING记录传入的数据包nat/PREROUTING修改数据包(它更改目标 IP 和端口)nat/POSTROUTING记录即将被转发的修改过的数据包尽管第一条规则确实记录了来自我的笔记本电脑的传入数据包,但第三条规则不会记录应该由第二条规则修改的数据包。但是,它确实记录了服务器中产生的数据包,因此我知道这两个 LOG 规则工作正常。
为什么数据包没有被转发,或者至少为什么它们没有被第三条规则记录?
PS:没有比这三个更多的规则了。所有表中的所有其他链都是空的,并且策略为 ACCEPT。
小智 6
您可能需要在服务器上打开 ip 转发。尝试
回声 1 > /proc/sys/net/ipv4/ip_forward
| 归档时间: |
|
| 查看次数: |
13321 次 |
| 最近记录: |