1. 程式人生 > >Linux(CentOS)下,設定NAT,訪問內網伺服器

Linux(CentOS)下,設定NAT,訪問內網伺服器

首先,要開啟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。
(設定內網IP的方法,參見《設定IP/Netmask/Gateway等》)
伺服器A和B,都開啟了SSH的服務(預設埠22),我希望能遠端控制A和B。
由於A具備外網IP,所以,我可以用SSH終端軟體(SecureCRT)直接控制它。
下面,我們看看如何設定,才能遠端控制內網伺服器B:
首先,需要將B的SSH埠,修改為50022(參見《修改SSH的埠號》);
然後,在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了!
檢視防火牆的詳細配置,可參考《防火牆iptables配置
》。