我们有一个代理过滤连接,但有些网站使用 RTMP,它在端口 1935 上运行。这无法通过代理,因为代理仅有端口 80。
据我所知,如果 RTMP 失败,它将在端口 80 上重试。
那么,我该如何阻止 1935 以iptables
强制 RTMP 通过正常的 HTTP 端口?
我有以下内容但它不起作用。
任何 RTMP 流仍然失败。
[root@li711-43 ~]# iptables -A INPUT -p tcp --destination-port 1935 -j DROP
[root@li711-43 ~]# iptables -A OUTPUT -p tcp --dport 1935 -j DROP
答案1
那么,我该如何阻止 1935 以
iptables
强制 RTMP 通过正常的 HTTP 端口?
使用预路由链:
iptables -t nat -I PREROUTING -p tcp --dport 1935 -j REDIRECT --to-ports 80
但话虽如此,你也这么说:
我们有一个代理过滤连接,但有些网站使用 RTMP,它在端口 1935 上运行。这无法通过代理,因为代理仅有端口 80。
那么端口 1935 是否完全被阻止了?您至少需要在 FORWARD 链中打一个洞以允许 1935 通过,然后通过上述 PREROUTING 规则将其发送到端口 80:
iptables -A INPUT -p tcp -m tcp --dport 1935 -j ACCEPT
或者,如果iptables
要将该流量转发到另一台机器,则需要像这样设置该 IP;替换123.45.67.89
为目标机器的实际 IP 地址:
iptables -A FORWARD -i eth0 -p tcp --dport 1935 -d 123.45.67.89 -j ACCEPT