天天看點

linux解除安裝socat,linux rinetd、socat端口轉發部署

端口轉發映射的程式叫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