首先,要打开Linux内核的转发数据包的功能,也就是将/proc/sys/net/ipv4/ip_forward里的值设置为1。
# 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。tcp
例子:
两台服务器(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端口22,映射到A的10022spa
用DNAT时,必须同时用SNAT,不然会无效!orm
将全部发到A的端口为10022的请求,都转发给Bip
# iptables -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.0.3:22it
B发给A的请求,都认为是从A的地址上发出的io
# iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.3 -j SNAT --to-source 192.168.0.2table
保存配置,重启后也有效软件
# service iptables save
进行上述配置后,就能够用22端口访问A,用10022端口访问B了!配置