当前位置: 首页 » 资讯 » 综合 » 正文

ubuntu – 使用iptables进行端口转发不起作用

发布日期:2023-09-30 15:43:54     浏览次数:4
核心提示:我正在使用Ubuntu Server Box()将我的网络路由到互联网.这个盒子有2个以太网卡(eth0用于互联网连接,eth1用于lan – .1),我想将端口80转发到我的服务器(.254).所以,我设置了以下内容: ipta
我正在使用Ubuntu Server Box()将我的网络路由到互联网.这个盒子有2个以太网卡(eth0用于互联网连接,eth1用于lan – .1),我想将端口80转发到我的服务器(.254).所以,我设置了以下内容:

iptables -Fiptables -t nat -Fiptables -Xiptables -t nat -Xiptables -t mangle -F# default route:ip route add default via .67# www tunnel:iptables -I FORWARD -p tcp -d .254 --dport 80 -i eth0 -j ACCEPT# this line locks up internet access for all users:#iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination .254:80# ssh tunneliptables -I FORWARD -p tcp -d .254 --dport 22 -i eth0 -j ACCEPT# this line uncommented locks all my accesses to external ssh servers:#iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination .254:22# NATmodprobe iptable_natecho 1 > /proc/sys/net/ipv4/ip_forwardiptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

用于我网络内部连接的NAT正在运行,但是端口转发(ssh和www)都不起作用,我不知道我做错了什么.你可以帮帮我吗?

您的DNAT规则需要更具体一些才能正常工作.一种方法是向每个条件添加–destination(或-d)条件,例如:

iptables -t nat -A PREROUTING -d $EXT_IP -p tcp --dport 80 -j DNAT --to-destination .254iptables -t nat -A PREROUTING -d $EXT_IP -p tcp --dport 22 -j DNAT --to-destination .254

其中$EXT_IP是路由器的外部(全局可路由)IP地址.

警告:如果内部客户端尝试通过外部(全局可路由)IP地址连接到.254上的www或ssh服务,则其连接尝试将失败(直接连接到.254的连接将成功).

要解决此问题,最好告诉内部客户端通过其内部IP地址访问服务器.或者,您可以通过添加更多iptables规则来配置“发夹NAT”,如下所示:

iptables -t nat -A POSTROUTING -s .0/24 -d .254 -p tcp --dport 80 -j SNAT --to-source $INT_IPiptables -t nat -A POSTROUTING -s .0/24 -d .254 -p tcp --dport 22 -j SNAT --to-source $INT_IP

其中$INT_IP是路由器的内部IP地址(例如.1).根据这些规则,从内部客户端到外部IP地址的连接将通过路由器.尽可能避免使用发夹NAT,因为它对网络和路由器系统资源的使用效率相当低.

头条分类

免责声明:本站所有信息由各公司自行发布,请在交易前确认真实合法性,本站不承担任何交易及此类作品侵权行为的直接责任及连带责任!