標籤:nat rinetd
這兩天和同事討論問題的時候知道了一個很好用的NAT工具—rinetd,它是由c實現的一個短小、實用的NTA轉寄工具,它的官網是在:http://www.boutell.com/rinetd/
[[email protected] src]# wget http://www.boutell.com/rinetd/http/rinetd.tar.gz [[email protected] src]# tar -zxvf rinetd.tar.gz [[email protected] src]# cd rinetd [[email protected] rinetd]# vim Makefile#修改下Makefile CFLAGS=-DLINUX -grinetd: rinetd.o match.o gcc rinetd.o match.o -o rinetdinstall: rinetd install -m 700 rinetd /usr/sbin install -m 644 rinetd.8 /usr/local/share/man/man8 [[email protected] rinetd]# make && make install
這樣rinetd就安裝好了,使用也很簡單可以指定設定檔,一般是放在/etc/rinetd.conf使用-c參數指定設定檔,rinetd是依賴於設定檔工作的
[[email protected] rinetd]# rinetd --helpUsage: rinetd [OPTION] -c, --conf-file FILE read configuration from FILE -h, --help display this help -v, --version display version numberMost options are controlled through theconfiguration file. See the rinetd(8)manpage for more information.
更多的參數選項可以參看man rinetd在此就不做過多的說明,利用rinetd可以實現快速高效的連接埠轉寄,舉一個簡單的例子,在三層交換器中的2個vlan:192.168.1.0/24、192.168.2.0/24,2個vlan間內網是互連的但是192.168.1.0/24中沒有做任何的策略路由,只有內網而192.168.1.0/24在外有一個公網ip做了內部伺服器的NAT連接埠映射,即DZM區,而在外部需要訪問192.168.2.0/24內部的某一主機上的相關資源,此時就需要做相應的連接埠轉寄,而在2個vlan中分別有192.168.2.22和192.168.1.240,2台主機用rinetd來轉寄,就在192.168.2.22的主機上的/etc/rinetd.conf檔案中添加一行配置:
0.0.0.0 80 192.168.1.240 80#source_address source_port destination_address destination_port
當然利用iptables的nat錶轉發也是一樣,nat表如下:
*nat:PREROUTING ACCEPT [0:0]:POSTROUTING ACCEPT [3:226]:OUTPUT ACCEPT [3:226]-A PREROUTING -d 192.168.2.22/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.240:80 -A POSTROUTING -d 192.168.1.240/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.2.22 COMMIT
二者之間是等效的,如此可見rinetd的工具在實際生產環境中是非常高效的,這裡要注意兩點:一、無論是使用rinetd或者是iptables的nat表都需要開啟核心ip地址轉寄的功能,即net.ipv4.ip_forward = 1;二是在filter表中開相應的連接埠,如果是使用iptables的nat表來轉寄還要開放FORWARD鏈以實現轉寄
本文出自 “技術隨筆” 部落格,謝絕轉載!
Linux中的快速連接埠轉寄工具—rinetd