首頁 > 軟體

Linux中使用rinetd實現快速埠轉發

2020-06-16 17:14:35

Linux中一個很好用的NAT工具—rinetd,它是由C實現的一個短小、實用的NTA轉發工具,它的官網是在:http://www.boutell.com/rinetd/

 [root@localhost src]# wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
 [root@localhost src]# tar -zxvf rinetd.tar.gz
 [root@localhost src]# cd rinetd
 [root@localhost rinetd]# vim Makefile#修改下Makefile
 CFLAGS=-DLINUX -g
  
rinetd: rinetd.o match.o
        gcc rinetd.o match.o -o rinetd
  
install: rinetd
        install -m 700 rinetd /usr/sbin
        install -m 644 rinetd.8 /usr/local/share/man/man8
 [root@localhost rinetd]# make && make install

這樣rinetd就安裝好了,使用也很簡單可以指定組態檔,一般是放在/etc/rinetd.conf使用-c引數指定組態檔,rinetd是依賴於組態檔工作的

[root@localhost rinetd]# rinetd --help
Usage: rinetd [OPTION]
  -c, --conf-file FILE   read configuration from FILE
  -h, --help             display this help
  -v, --version          display version number
  
Most options are controlled through the
configuration 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鏈以實現轉發

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-05/144035.htm


IT145.com E-mail:sddin#qq.com