linux通過rinetd工具進行端口映射/轉發/重定向

現在線上有個需求,訪問某源的地址,需要通過一個固定的出口出去才行。那麼這裏想到的轉發的幾種方式:
1.iptables對端口做轉發,這種需要開啓內核轉發。配置幾條iptables規則就好。
2.rinetd對端口做轉發,轉發規則類似於反響代理,或者nat 而且配置比較簡單。配置出錯也不會導致網絡訪問問題。
下面就來介紹rinetd的端口轉發
參考官網地址: https://www.boutell.com/rinetd/
下面直接是上乾貨

# tar -zxvf rinetd.tar.gz -C /usr/local
# cd rinetd 
[root@localhost rinetd]# make
cc -DLINUX -g   -c -o rinetd.o rinetd.c
rinetd.c:176: warning: conflicting types for built-in function ‘log’
cc -DLINUX -g   -c -o match.o match.c
gcc rinetd.o match.o -o rinetd
[root@localhost rinetd]# make install
install -m 700 rinetd /usr/sbin
install -m 644 rinetd.8 /usr/man/man8
install: cannot create regular file `/usr/man/man8': No such file or directory
make: *** [install] Error 1
[root@localhost rinetd]# mkdir -p /usr/man/
[root@localhost rinetd]# make clean
[root@localhost rinetd]# make 
cc -DLINUX -g   -c -o rinetd.o rinetd.c
rinetd.c:176: warning: conflicting types for built-in function ‘log’
cc -DLINUX -g   -c -o match.o match.c
gcc rinetd.o match.o -o rinetd
[root@localhost rinetd]# make install
install -m 700 rinetd /usr/sbin
install -m 644 rinetd.8 /usr/man/man8
[root@localhost rinetd]#
#成功後會提示文件路徑
install -m 700 rinetd /usr/sbin
install -m 644 rinetd.8 /usr/man/man8

程序路徑/usr/sbin/rinetd
建立配置文件/etc/rinetd.conf,內容格式:源IP 源端口 要跳轉的IP 要跳轉的端口;在每一單獨的行中指定每個要轉發的端口。源地址和目的地址都可以是主機名或IP 地址,IP 地址0.0.0.0 將rinetd 綁定到任何可用的本地IP地址上:
例如將所有發往本機81端口的請求轉發到某地址的80端口


[root@localhost rinetd]# vim /etc/rinetd.conf
allow *.*.*.*                //設置允許訪問的ip地址信息
0.0.0.0 81 目標IP 80                //設置端口轉發
logfile /var/log/rinetd.log        //設置打印的log

#啓動程序並將rinetd加入開機啓動

[root@localhost rinetd]# /usr/sbin/rinetd 
或者
[root@localhost rinetd]# rinetd -c /etc/rinetd.conf 
[root@localhost rinetd]# netstat -antulp|grep -i rinetd
tcp        0      0 0.0.0.0:81                0.0.0.0:*                   LISTEN      5849/rinetd         
[root@localhost rinetd]# killall -9 rinetd  或者pkill -9 rinetd
[root@localhost rinetd]# netstat -antulp|grep -i rinetd
[root@localhost rinetd]# rinetd 
[root@localhost rinetd]# netstat -antulp|grep -i rinetd
tcp        0      0 0.0.0.0:81                0.0.0.0:*  
                 LISTEN      5861/rinetd
                 
                 
                 
啓動程序
pkill rinetd  ##關閉進程
rinetd -c /etc/rinetd.conf  ##啓動轉發
把這條命令加到/etc/rc.local裏面就可以開機自動運行

查看狀態
netstat -antup

需要注意
1.rinetd.conf中綁定的本機端口必須沒有被其它程序佔用
2.運行rinetd的系統防火牆應該打開綁定的本機端口
例如:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1111 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT


#至此就可以進行訪問測試了!所有訪問本機81端口的請求,都會轉發到 目標IP 的 80端口


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章