我正在运行一个路由器,需要通过代理过滤一些 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 规则,然后调用启动服务的实际脚本。另一种方法是,您首先删除第一个规则,添加第二个规则,然后调用脚本来停止服务。