這兩天和同僚讨論問題的時候知道了一個很好用的NAT工具—rinetd,它是由c實作的一個短小、實用的NTA轉發工具,它的官網是在:http://www.boutell.com/rinetd/
這樣rinetd就安裝好了,使用也很簡單可以指定配置檔案,一般是放在/etc/rinetd.conf使用-c參數指定配置檔案,rinetd是依賴于配置檔案工作的
更多的參數選項可以參看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檔案中添加一行配置:
當然利用iptables的nat表轉發也是一樣,nat表如下:
同時在iptables的filter表上FORWARD鍊上也要做相應的放行:
二者之間是等效的,如此可見rinetd的工具在實際生産環境中是非常高效的,這裡要注意兩點:
一、無論是使用rinetd或者是iptables的nat表都需要開啟核心ip位址轉發的功能,即net.ipv4.ip_forward = 1;
二、是在filter表中開相應的端口,如果是使用iptables的nat表來轉發還要開放FORWARD鍊以實作轉發
三、使用rinetd中都是把端口當成服務監聽,是以是長連接配接,如果是ssh這樣的服務在使用端口轉發後會在内網連接配接上的服務上殘餘很多程序,是以在使用rinetd一般是臨時快速實作端口轉發而用的,如果是長時間使用或者一些特殊場景下rinetd還是不如iptables的