猛牛哥
记录网络点滴生活

CENTOS通过iptables做端口转发

因为一些特殊原因,我需要用到端口转发功能,这个功能是这样的,我有2台服务器:A和B,分别是2个不同IP。2台服务器各自的特点是:A网络好,性能差;B网络差,但性能强。(此处“网络”只针对大陆IP访问的网络性能)
所以我的网站放在B上,但是要通过A服务器的IP去访问B服务器上的网站。(注意,这里只是拿放网站做例子,如果只放网站的话,使用nginx做反向代理即可。如果是其他的服务,就需要使用本文章说的端口转发。)

例如:
A服务器IP:1.1.1.1
B服务器IP:2.2.2.2
通过网上找到的资料,找到设置方法如下:

首先开启机器的转发功能,有2个方法,有的系统方法1重启后会失效,有的openvz的小鸡方法二无法试用。所以可以2个方法都试试,哪个能用就用哪个。

启用端口转发

方法一:

echo 1 >/proc/sys/net/ipv4/ip_forward

方法二:编辑文件/etc/sysctl.conf,修改net.ipv4.ip_forward = 0net.ipv4.ip_forward = 1,如果这行最前面有注释,就去掉注释。如果没有这行,就在文件末尾增加这行内容。保存后执行sysctl -p生效。

启用地址伪装

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

注意:其中的eth0一般是KVM结构的VPS的网卡接口名,如果是OPENVZ结构的VPS,一般是venet0,也有的服务器网卡名可能是其他它名称,可以使用ifconfig命令查看网卡接口名具体是什么。

设置转发端口

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 2.2.2.2

放行相应端口

iptables -I FORWARD -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -p tcp --sport 80 -j ACCEPT

然后保存并重启iptables,使新规则生效:

service iptables save

但是这样设置之后,却始终无法打开网站。

总结:完整设置好一个端口转发的完整步骤需要3个命令(只转发TCP连接的情况下)。

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 2.2.2.2
iptables -I FORWARD -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -p tcp --sport 80 -j ACCEPT

最后别忘记保存并重启iptables服务。

赞(0) 打赏
猛牛哥原创:猛牛哥的博客 » CENTOS通过iptables做端口转发

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏