Linux下服务端口转发参考
2009-12-04 10:33:01 阿炯

本文提供了两例在生产过程的服务端口转发参考:从跨公网临时处理因80端口被关闭的情形,内网跨主机的流量转发借道。充分使用了地址转换(NAT)与路由规则(ROUTING)配合实现相关的功能。

Redirect an incoming connection to a different IP address on a specific port.


服务器80端口被封解决之法

发现公司下托管的两台Linux主机的80端口被idc关闭了(因为未备案),但其它端口没有关闭,用户不能在外部访问访问。后只能更改Web服务器的侦听端口,但用户无法很快反应,用户操作比较麻烦;需要找一个对用户透明的办法来解决这过问题。现另外找一台服务器,位于其它机房且其80端口没有被封且没有被占用。被封的ip为'61.191.55.x',修改前服务的Web服务侦听端口为'8800',Ip'58.211.16.x'为提供转发的ip,要保证其80端口没有被使用。这种方法比做其它代理更高效和简单,希望对你有所帮助。
echo '1' > /proc/sys/net/ipv4/ip_forward(开启转发功能)

iptables -t nat -A PREROUTING -d 58.211.16.x -p tcp -m tcp --dport 80 -j DNAT --to-destination 61.191.55.x:8800
iptables -t nat -A POSTROUTING  -s 0/0 -d 61.191.55.x -p tcp -m tcp --dport 8800 -j SNAT --to-source 58.211.16.x

去试一下吧,成功的话就去修改主机名指向'58.211.16.x'。


下面脚本定义了访问192.168.9.72的873端口时,将其转发至192.168.9.9:873。

#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
#Delete all existing rules in filter.
iptables -t nat -F
iptables -t nat -A PREROUTING -d 192.168.9.72 -p tcp -m tcp --dport 873 -j DNAT --to-destination 192.168.9.9:873
iptables -t nat -A POSTROUTING -j MASQUERADE
#List all rules at the end.
iptables --list --numeric -t nat

Set MASQUERADE to mask the IP address of the connecting system and use the gateway IP address instead. This is necessary for it to communicate back to the gateway.



该文章最后由 阿炯 于 2022-07-09 18:18:14 更新,目前是第 2 版。