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服務。