荣耀之链论坛

 找回密码
 立即注册
搜索
查看: 2914|回复: 2

linux下实现端口转发两种方法

[复制链接]

1325

主题

2372

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10262
发表于 2015-8-22 10:49 | 显示全部楼层 |阅读模式
在Linux下面可以利用两个工具实现不同的转发,一个是防火墙工具iptables,另一个是ssh隧道。

假设现在有一个服务器集群,其中front是集群前端节点,back是后端极点,front可以再外网访问,back和front在一个内网里面,不能被外界直接访问。back在8080端口上启用了web服务,现在要实现外部计算机public能访问back上的web服务。

利用iptables,在front上做如下配置即可
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -d --dport 80 \
                -J DNAT --to-destination :8080
iptables -t nat -A POSTROUTING -p tcp -s --sport 8080 \
                -J SNAT --to-source


利用ssh打开一个ssh隧道
ssh -L *:80::8080 localhost


比较:
用iptables和其他防火墙规则配合,不会受到防火墙及其他软件影响,但是如果只是作为临时的转发,还是比较麻烦。相对来说ssh隧道就比较简单,普通用户就可以运行但是它有可能受到防火墙的限制,而且要ssh服务器支持端口转发。所以,前者适合于稳定长期使用的端口转发,儿后者适合于建立临时的转发功能。
回复

使用道具 举报

1325

主题

2372

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10262
 楼主| 发表于 2015-8-22 13:06 | 显示全部楼层
命令如下:
#echo 1 > /proc/sys/net/ipv4/ip_forward
#iptables -t nat -I PREROUTING -p tcp --dport 8081 -j DNAT --to xx.xx.xx.xx
#iptables -t nat -I POSTROUTING -p tcp --dport 8081 -j MASQUERADE
#service iptables save
#service iptables restart
===========================================================

第一条命令表示允许数据包转发;
第二条命令表示转发TCP 8081到xx.xx.xx.xx;
第三条命令表示使转发数据包实现“双向通路”,给数据包设置一个正确的返回通道。
第四条命令表示将规则保存到/etc/sysconfig/iptables文件
第五条命令表示重启iptables使刚才添加的规则生效

很多人按照网上的方法作端口映射,始终没有成功的原因是没有执行第四、第五条命令。

注:如果执行上述命令,依然不能转发,可能由于iptables服务没有停止,命令无法写入iptables文件,应先执行service iptables stop,再执行上述命令,最后service iptables start再启动服务
回复 支持 反对

使用道具 举报

1325

主题

2372

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10262
 楼主| 发表于 2015-8-22 18:59 | 显示全部楼层
下面是我自己的语句,所有端口转发均成功

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 9030 -j DNAT --to 10.162.216.254:9030
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 9030 -j DNAT --to 10.162.216.254:9015
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 9030 -j DNAT --to 10.162.216.254:1072
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 9030 -j DNAT --to 10.162.216.254:9600
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 8080 -j DNAT --to 118.244.213.101:80
iptables -t nat -A POSTROUTING -j MASQUERADE

iptables -t filter -A INPUT -j ACCEPT
iptables -t filter -A OUTPUT -j ACCEPT
iptables -t filter -A FORWARD -j ACCEPT

service iptables save
service iptables restart
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

荣耀之链

GMT+8, 2025-6-18 02:50 , Processed in 0.015342 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表