linux上用的端口转发工具,Linux中的快速端口转发工具—rinetd
這兩天和同事討論問題的時候知道了一個很好用的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
同時在iptables的filter表上FORWARD鏈上也要做相應的放行:-A?FORWARD?-s?192.168.1.0/24?-j?ACCEPT
-A?FORWARD?-s?192.168.2.0/24?-j?ACCEPT
-A?FORWARD?-d?192.168.1.0/24?-j?ACCEPT
-A?FORWARD?-d?192.168.2.0/24?-j?ACCEPT
-A?FORWARD?-j?REJECT?--reject-with?icmp-host-prohibited
二者之間是等效的,如此可見rinetd的工具在實際生產環境中是非常高效的,這里要注意兩點:
一、無論是使用rinetd或者是iptables的nat表都需要開啟內核ip地址轉發的功能,即net.ipv4.ip_forward = 1;
二、是在filter表中開相應的端口,如果是使用iptables的nat表來轉發還要開放FORWARD鏈以實現轉發
三、使用rinetd中都是把端口當成服務監聽,所以是長連接,如果是ssh這樣的服務在使用端口轉發后會在內網連接上的服務上殘余很多進程,所以在使用rinetd一般是臨時快速實現端口轉發而用的,如果是長時間使用或者一些特殊場景下rinetd還是不如iptables的
總結
以上是生活随笔為你收集整理的linux上用的端口转发工具,Linux中的快速端口转发工具—rinetd的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux内核引入模块机制好处,linu
- 下一篇: qtiplot编译失败linux,在ma