首先,要打開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了!配置