如果端口开放,iptables nat 是否重定向到端口?

如果端口开放,iptables nat 是否重定向到端口?

我正在运行一个路由器,需要通过代理过滤一些 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 确定端口是否启动/正在工作。

我想到有两种方法可以解决这个问题。

  1. 定期运行脚本检查端口状态

    您可以编写一个小的 bash 脚本来检查端口是否已打开并执行所需的任务。查找 TCP 端口是否已打开的简单方法nc描述在这里。该脚本可以通过 cron 定期运行。

  2. 创建包装器脚本用于启动和停止实际服务

    此脚本将用于启动和停止在端口 80 上运行的服务。它将添加第一个 iptables 规则,然后调用启动服务的实际脚本。另一种方法是,您首先删除第一个规则,添加第二个规则,然后调用脚本来停止服务。

相关内容