CentOS下开启配置端口转发

新建一个虚拟网卡 设置NAT转发(保证小鸡能上网)

安装完后,要先创建个虚拟网卡,在母鸡操作,如下

vim /etc/sysconfig/network-scripts/ifcfg-intbr0

黏贴下面的内容

DEVICE=intbr0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=10.0.1.1 #根据你在面板中设置的 IP 来填写
NETMASK=255.255.255.0

重启网络

service network restart

开启IP转发

首先开启IP转发功能,默认是关闭的。

临时修改:

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

修改过后就马上生效,但如果系统重启后则又恢复为默认值0。

永久修改:

vi /etc/sysctl.conf

# 找到下面的值并将0改成1

net.ipv4.ip_forward = 1

# sysctl -p(使之立即生效)

默认值0是禁止ip转发,修改为1即开启ip转发功能。

配置端口转发

假设用户访问172.16.4.247:728时我想让它转发到172.16.4.97:80:

# iptables -t nat -A PREROUTING -p tcp -d 113.108.110.61 --dport 728 -j DNAT --to-destination 172.16.4.97:80

# iptables -t nat -A POSTROUTING -p tcp -s 172.16.4.97 --sport 80 -j SNAT --to-source 172.16.4.247

# service iptables save(将当前规则保存到 /etc/sysconfig/iptables)

或者,你也可以直接修改/etc/sysconfig/iptables文件:

-A PREROUTING -d 172.16.4.247/32 -p tcp -m tcp --dport 728 -j DNAT --to-destination 172.16.4.97:80

-A POSTROUTING -s 172.16.4.97/32 -p tcp -m tcp --sport 80 -j SNAT --to-source 172.16.4.247

最后不要忘了开放728端口

-A INPUT -p tcp -m state --state NEW -m tcp --dport 728 -j ACCEPT

配置完成后,记得重启防火墙:

# service iptables restart

本机端口转发

如果只需要在本机间不同的端口转发就比较容易了,比如 访问 http://ip:729 我想返回 http://ip:80 的内容,配置如下:

[root@localhost sbin]# iptables -t nat -A PREROUTING -p tcp --dport 729 -j REDIRECT --to-ports 80

[root@localhost sbin]# service iptables save

[root@localhost sbin]# service iptables restart

PS:

2、端口转发

首先,要打开Linux内核的转发数据包的功能,也就是将/proc/sys/net/ipv4/ip_forward里的值设置为1。
可以这样做:# echo 1 > /proc/sys/net/ipv4/ip_forward
重启网络服务(service network restart)后,该设置失效;想要长久有效,可用如下的方法:
# vi /etc/sysctl.conf #编辑该文件,将其中的如下内容,设置为1
net.ipv4.lp_forward=1
# sysctl -p  #让设置,立即生效

然后,就可以用iptables命令设置NAT了。
NAT(Network Address Translation),分为DNAT(Destination)和SNAT(Source)。
DNAT,使用PREROUTING,用于外网访问内网里的主机服务器,透明转发或端口映射。
SNAT,使用POSTROUTING,用于内网里的主机,访问外网,即分享公网IP。

我的例子:
两台服务器(A和B),只有A有公网IP(115.238.54.116),B没有;
它们组建了内网,A的内网IP是192.168.0.2,B的内网IP是192.168.0.3。
服务器A和B,都开启了SSH的服务(默认端口22),我希望能远程控制A和B。
由于A具备外网IP,所以,我可以用SSH终端软件(SecureCRT)直接控制它。
下面,我们看看如何设置,才能远程控制内网服务器B:
首先,需要将B的SSH端口,修改为50022
然后,在A上,设置其NAT(无需对B进行设置,关闭其防火墙即可):
# iptables -t nat -A PREROUTING -p tcp --dport 50022 -j DNAT --to-destination 192.168.0.3
# iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.3 -j SNAT --to-source 192.168.0.2
# service iptables  save
说明:这里同时用了DNAT和SNAT;用DNAT时,必须同时用SNAT,否则会无效!
        第一句,是将所有发到A的端口为50022的请求,都转发给B。
        第二句,是B发给A的请求,都认为是从A的地址上发出的。
        第三句,保存配置,重启后也有效。
进行上述配置后,然后,就可以用22端口访问A,用50022端口访问B了!
--------------------- 
 

你可能感兴趣的:(cnetos)