iptables 端口转发到本地主机

iptables 端口转发到本地主机

在我的 Linux 服务器上,使用同一台机器上的 iptables,我想将流量重定向到端口 1234/tcp 上的外部接口到 32400/tcp 上的环回接口,以隐藏 plex 服务器默认端口。我无法应用基于 IP 地址的过滤,因为我正在从不同的 IP 使用它。

我正在这样做:

# enables forwarding output traffic from eth0 to 1234/tcp to 127.0.0.1:32400 tcp
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 1234 -j DNAT --to 127.0.0.1:32400
iptables -I FORWARD -p tcp -d 127.0.0.1 --dport 32400 -j ACCEPT
# let the kernel accept public IPs accessing loopback interface
echo 1 > /proc/sys/net/ipv4/conf/all/route_localnet
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding

这仅当我使用以下命令保持端口 32400/tcp 允许外部流量时才有效:

iptables -I INPUT -p tcp --dport 32400 -j ACCEPT
iptables -I INPUT -p tcp --dport 1234 -j ACCEPT

我只想让 1234/tcp 向外部开放并阻止 32400/tcp 知道我为什么在这里失败吗?

谢谢

答案1

为了达到您的目标,只需指定应该允许端口的接口。

在您的情况下,通过添加将 32400 限制为环回接口-i lo应该可以解决问题:

iptables -I INPUT -i lo -p tcp --dport 32400 -j ACCEPT

请注意,您正在添加规则,-I但并未粘贴整个规则集,这可能是相关的。

此外,您可以考虑重新配置您的服务以使用 32400 以外的端口。

相关内容