Linux下端口轉發通常都使用iptables來實現,使用iptables能夠很容易將TCP和UDP端口從防火牆轉發到內部主機上。可是若是須要將流量從專用地址轉發到不在您當前網絡上的機器上,可嘗試另外一個應用層端口轉發程序Rinetd。Rinetd短小、高效,配置起來比iptables也簡單不少。linux
Rinetd是爲在一個Unix和Linux操做系統中爲重定向傳輸控制協議(TCP)鏈接的一個工具。Rinetd是單一過程的服務器,它處理任何數量的鏈接到在配置文件etc/rinetd中指定的地址/端口對。儘管rinetd使用非閉鎖I/O運行做爲一個單一過程,它可能重定向不少鏈接而不對這臺機器增長額外的負擔。vim
經過包安裝服務器
CentOS網絡
官方源中不具備Rinetd,因此須要先安裝三方源。app
配置三方源ide
32位系統工具
$ vim /etc/yum.repos.d/nux-misc.repo [nux-misc] name=Nux Misc baseurl=http://li.nux.ro/download/nux/misc/el6/i386/ enabled=0 gpgcheck=1 gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
64位系統url
$ vim /etc/yum.repos.d/nux-misc.repo: [nux-misc] name=Nux Misc baseurl=http://li.nux.ro/download/nux/misc/el6/x86_64/ enabled=0 gpgcheck=1 gpgkey=http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
安裝Rinetdspa
$ yum --enablerepo=nux-misc install rinetd
Ubuntu操作系統
$ apt-get install rinetd
編譯安裝
$ wget http://www.boutell.com/rinetd/http/rinetd.tar.gz $ mkdir -p /usr/man/man8 #默認會把man文件放麼/usr/man/man8下面,若是沒有這個目錄會報目前不存在,但不影響使用. $ make && make install
配置端口轉發的配置文件在/etc/rinetd.conf
配置文件格式
[bindaddress] [bindport] [connectaddress] [connectport] 綁定的地址 綁定的端口 鏈接的地址 鏈接的端口 [Source Address] [Source Port] [Destination Address] [Destination Port] 源地址 源端口 目的地址 目的端口
在每一單獨的行中指定每一個要轉發的端口。源地址和目的地址均可以是主機名或IP地址,IP 地址0.0.0.0將rinetd綁定到任何可用的本地IP地址上。例如:0.0.0.0 8080 www.hi-linux.com 80
配置規則
$ vim /etc/rinetd.conf 0.0.0.0 8080 172.19.94.3 8080 0.0.0.0 2222 192.168.0.103 3389 1.2.3.4 80 192.168.0.10 80 allow *.*.*.* logfile /var/log/rinetd.log
說明
0.0.0.0表示本機綁定全部可用地址
將全部發往本機8080端口的請求轉發到172.19.94.3的8080端口
將全部發往本機2222端口的請求轉發到192.168.0.103的3389端口
將全部發往1.2.3.4的80端口請求轉發到192.168.0.10的80端口
allow設置容許訪問的ip地址信息,*.*.*.*
表示全部IP地址
logfil設置打印的log的位置
啓動Rinetd
腳本啓動
$ /etc/init.d/rinetd start
手動啓動
編譯安裝不自帶腳本
$ /usr/sbin/rinetd -c /etc/rinetd.conf
關閉rinetd
腳本關閉
$ /etc/init.d/rinetd stop
手動關閉
編譯安裝不自帶腳本
$ pkill rinetd
注意事項
1.rinetd.conf中綁定的本機端口必須沒有被其它程序佔用2.運行rinetd的系統防火牆應該打開綁定的本機端口3.不支持FTP的跳轉