阻止 rtmp 并通过 iptables 使其在端口 80 上重试

阻止 rtmp 并通过 iptables 使其在端口 80 上重试

我们有一个代理过滤连接,但有些网站使用 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

相关内容