![如果端口开放,iptables nat 是否重定向到端口?](https://linux22.com/image/725280/%E5%A6%82%E6%9E%9C%E7%AB%AF%E5%8F%A3%E5%BC%80%E6%94%BE%EF%BC%8Ciptables%20nat%20%E6%98%AF%E5%90%A6%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E7%AB%AF%E5%8F%A3%EF%BC%9F.png)
我正在运行一个路由器,需要通过代理过滤一些 http 请求以阻止一些域请求。那么,如何确保即使代理关闭,也能始终与目的地建立连接?
我需要:
iptables -t nat -A PREROUTING --dport 80 -j DNAT --to 127.0.0.1 # if 127.0.0.1:80 open
但如果127.0.0.1:80
死了,我该如何实现PREROUTING规则返回如下:
iptables -t nat -A PREROUTING --dport 80 -j RETURN # if 127.0.0.1:80 dead
可以使用NQA(网络质量分析仪)+Track解决吗?
答案1
据我所知,没有选项可以让 iptables 确定端口是否启动/正在工作。
我想到有两种方法可以解决这个问题。
定期运行脚本检查端口状态
您可以编写一个小的 bash 脚本来检查端口是否已打开并执行所需的任务。查找 TCP 端口是否已打开的简单方法
nc
是描述在这里。该脚本可以通过 cron 定期运行。创建包装器脚本用于启动和停止实际服务
此脚本将用于启动和停止在端口 80 上运行的服务。它将添加第一个 iptables 规则,然后调用启动服务的实际脚本。另一种方法是,您首先删除第一个规则,添加第二个规则,然后调用脚本来停止服务。