Linux下做地址NAT有很多種方法。比如haproxy、nginx的4層代理,linux自帶的iptables等都能實現。haproxy、nginx就不說了,配置相對簡單;iptables配置複雜,概念也比較多DNAT、SNAT、PREROUTING、POSTROUTING等等。其實,Linux下有一個叫rinetd的工具,安裝簡單,配置也不復雜。
安裝篇
1、下載,解壓,安裝
[root@zhenyunode zhenyutest]# cd ~/zhenyutest/ [root@zhenyunode zhenyutest]# wget http://www.boutell.com/rinetd/http/rinetd.tar.gz [root@zhenyunode zhenyutest]# tar -xvf ~/zhenyutest/rinetd.tar.gz [root@zhenyunode zhenyutest]# cd ~/zhenyutest/rinetd/ [root@zhenyunode rinetd]# sed -i 's/65536/65535/g' rinetd.c [root@zhenyunode rinetd]# mkdir /usr/man/ [root@zhenyunode rinetd]# make && make install cc -DLINUX -g -c -o rinetd.o rinetd.c rinetd.c:176:6: 警告:與內建函式‘log’型別衝突 [預設啟用] void log(int i, int coSe, int result); ^ cc -DLINUX -g -c -o match.o match.c gcc rinetd.o match.o -o rinetd install -m 700 rinetd /usr/sbin install -m 644 rinetd.8 /usr/man/man8 [root@zhenyunode rinetd]#
2、建立配置檔案
[root@zhenyutest rinetd]# vi /etc/rinetd.conf 0.0.0.0 8080 192.168.31.22 8080
配置檔案格式很簡單:[Source Address] [Source Port] [Destination Address] [Destination Port]
3、啟動、關閉程式
啟動: [root@zhenyunode rinetd]# rinetd -c /etc/rinetd.conf [root@zhenyunode ~]# ps -ef | grep rinetd root 27346 27300 0 12:34 pts/1 00:00:00 grep --color=auto rinetd root 32186 1 0 5月16 ? 00:00:00 rinetd -c /etc/rinetd.conf 停止: [root@zhenyunode rinetd]# killall rinetd
4、校驗
root@zhenyunode rinetd]# netstat -tanulp|grep rinetd tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 32186/rinetd
應用篇
由上圖所示,由於物理網路原因,各個機房並不能夠互通,但均可以訪問網際網路,這種情況下,要遠端操作某個機房中的內部管理介面就非常困難了。上圖中,每個機房中均有一臺踏板機,能夠連線到公有云中的一臺vpn伺服器上,並獲得相應的IP,192.168.222.x。這樣,在總控制處,只要某臺機器也能登陸到相應的vpn伺服器上,就相當於同各個機房中的踏板機同處於一個內網中。
例如,機房A的踏板機上配置了rinetd服務,配置的規則為:0.0.0.0 8080 192.168.31.22 8080(將本機8080埠轉發至內網192.168.31.22:8080 的zabbix伺服器),這樣,在總控制處,通過連線192.168.222.3:8080 即可訪問到機房A中的zabbix服務。