端口轉發映射的程式叫rinetd,下載下傳位址,直接manke編譯安裝即可。[[email protected] src]# wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
[[email protected] src]# ls
rinetd.tar.gz
[[email protected] src]# tar -zxvf rinetd.tar.gz
[[email protected] src]# cd rinetd
[[email protected] 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
[[email protected] 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
[[email protected] rinetd]#
運作make可能會出現錯誤,需如下修改,将rinetd.c檔案中bindPort >= 65536和connectPort >= 65536修改為65535,不然在make的時候會提示超出系統最大定義端口,按n可以查找下一處[[email protected] rinetd]# vim rinetd.c
544 if ((bindPort == 0) || (bindPort >= 65535)) {
567 if ((connectPort == 0) || (connectPort >= 65535)) {
或者
[[email protected] rinetd]# sed -i "s/35536/35535/g" rinetd.c
手動建目錄/usr/man/[[email protected] rinetd]# mkdir -p /usr/man/
[[email protected] rinetd]# make clean
[[email protected] 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
[[email protected] rinetd]# make install
install -m 700 rinetd /usr/sbin
install -m 644 rinetd.8 /usr/man/man8
[[email protected] 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位址上:
例如将所有發往本機80端口的請求轉發到192.168.4.247的80端口[[email protected] rinetd]# vim /etc/rinetd.conf
allow 10.15.44.162 //設定允許通路的ip位址資訊
# allow 0.0.0.0
#allow 10.15.44.*
#deny 10.15.44.144
0.0.0.0 8090 10.15.44.133 80 //設定端口轉發
logfile /var/log/rinetd.log //設定列印的log
啟動程式并将rinetd加入開機啟動[[email protected] rinetd]# /usr/sbin/rinetd
或者
[[email protected] rinetd]# rinetd -c /etc/rinetd.conf
[[email protected] rinetd]# netstat -antulp|grep -i rinetd
tcp 0 0 0.0.0.0:8090 0.0.0.0:* LISTEN 5849/rinetd
[[email protected] rinetd]# killall -9 rinetd 或者pkill -9 rinetd
[[email protected] rinetd]# netstat -antulp|grep -i rinetd
[[email protected] rinetd]# rinetd
[[email protected] rinetd]# netstat -antulp|grep -i rinetd
tcp 0 0 0.0.0.0:8090 0.0.0.0:* LISTEN 5861/rinetd
[[email protected] rinetd]# cat /etc/rc.d/rc.local |grep -v "#"
/usr/sbin/rinetd -c /etc/rinetd.conf
touch /var/lock/subsys/local
[[email protected] rinetd]#
這樣的話隻要在任意浏覽器通路:http://10.15.44.125:8090(rinetd伺服器位址)就和通路http://10.15.44.133同樣的效果。但是這個隻能在10.15.44.162機器上實作,其他機器就不行,如果
注意事項1. rinetd.conf中綁定的本機端口必須沒有被其它程式占用2. 運作rinetd的系統防火牆應該打開綁定的本機端口-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT
3.不支援FTP的跳
socat作用是在兩個流之間建立雙向的通道,且支援衆多協定和連結方式:ip,tcp,udp,ipv6,pipe,exec,system,open,proxy,openssl,socket等
yum 方式安裝:wget –no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo
yum makecache
yum install socat
使用方式:nohup socat tcp-l:外部通路端口,reuseaddr,fork tcp:192.168.xxx.xxx:内部轉發端口
nohup socat TCP4-LISTEN:188,reuseaddr,fork TCP4:192.168.1.22:123 &
在本地監聽188端口,并将請求轉發至192.168.1.22的123端口
TCP4-LISTEN:在本地建立的是一個TCP ipv4協定的監聽端口;
reuseaddr:綁定本地一個端口;
fork:設定多連結模式,即當一個連結被建立後,自動複制一個同樣的端口再進行監聽
socat啟動監聽模式會在前端占用一個shell,是以需使其在背景執行。
附:socat官方文檔:http://www.dest-unreach.org/socat/doc/socat.html