如何从适配器转发端口到本地主机,更改端口

如何从适配器转发端口到本地主机,更改端口

我正在使用 Ubuntu 16 服务器。

我正在尝试使用 iptables 将端口从特定网络适配器和端口转发到 lo/127.0.0.1 上的特定端口。这似乎是正确的工具。

举个例子,假设我希望适配器 ens192 将端口 8443 上的传入流量转发到 127.0.0.1:443。我不希望 ens192 的 443 到达 127.0.0.1:443... 它应该显示为已关闭。

我在全新安装中进行了以下调用(为方便起见,以 sudo su 的形式):

# sysctl -w net.ipv4.ip_forward=1  # permits port-forwarding
# sysctl -w net.ipv4.conf.ens192.route_localnet=1  # permits routing adapter 2 localhost
# iptables -P INPUT DROP
# iptables -t nat -A PREROUTING -i ens192 -p tcp --dport 8443 -j DNAT \
--to-destination 127.0.0.1:443
# iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE

但是,这不起作用...浏览 [ip]:8443 没有产生预期的结果...浏览器超时。

我已验证服务器在所需端口上正常运行。

我假设浏览器的 TCP 请求在服务器内发生变化,看起来好像它联系的是 127.0.0.1:443。然后,在响应时,IP 地址会在离开时转换回 ens192 的地址/端口。还是...不是?

答案1

问题似乎在于您添加了规则来对流量进行 NAT,但实际上并未允许其通过。以下规则是一种快速允许所有进行 NAT 的流量的方法:

iptables -A INPUT -m conntrack --ctstate DNAT -j ACCEPT

看看这条规则是否能满足您的要求。如果仍然不起作用,请尝试将 INPUT 链策略暂时改回 ACCEPT,以确定防火墙是否是问题所在。

相关内容