1. 程式人生 > >linux rinetd 埠轉發部署及監控

linux rinetd 埠轉發部署及監控

linux下簡單好用的工具rinetd,實現埠對映/轉發/重定向

      Rinetd是為在一個Unix和Linux作業系統中為重定向傳輸控制協議(TCP)連線的一個工具。Rinetd是單一過程的伺服器,它處理任何數量的連線到在配置檔案etc/rinetd中指定的地址/埠對。儘管rinetd使用非閉鎖I/O執行作為一個單一過程,它可能重定向很多連線而不對這臺機器增加額外的負擔。

軟體安裝:

1

2

3

4

5

#解壓安裝

tar zxvf rinetd.tar.gz

cd rinetd

make

make install

執行過程中如果出現下面的錯誤

1

install: cannot create regular file `/usr/man/man8': No such file or directory

需要手動建立一下資料夾,重新編譯安裝即可

1

mkdir -p /usr/man/man8

然後開始配置檔案.

1

2

3

4

#vim /etc/rinetd.conf

0.0.0.0 8080 172.19.94.3 8080

0.0.0.0 9090 192.168.0.103 3389

1.2.3.4 80     192.168.0.10 80

說明一下(0.0.0.0表示本機繫結所有可用地址)
將所有發往本機8080埠的請求轉發到172.19.94.3的8080埠
將所有發往本機9090埠的請求轉發到192.168.0.103的3389埠
將所有發往1.2.3.4的80埠請求轉發到192.168.0.10的80埠  

命令格式是:

1

2

3

4

5

bindaddress   bindport      connectaddress   connectport

繫結的地址      繫結的埠    連線的地址           連線的埠

[Source Address] [Source Port] [Destination Address] [Destination Port]

源地址                  源埠            目的地址                     目的埠    

啟動程式:

1

2

3

pkill rinetd                        #關閉程序

rinetd -c /etc/rinetd.conf   ##啟動轉發

#把這條命令加到/etc/rc.local裡面就可以開機自動執行           

檢視狀態:

1

netstat -antup

需要注意:

1

2

3

4

5

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

 因為我們的跳板機都是轉發的資料庫和redis的埠,運行了一段時間後每天早上來rinetd服務就掛了,沒辦法就執行寫個指令碼檢查pid號,如果掛了就重啟。

更強大的轉發軟體可以使用:haproxy 這個軟體絕對強大穩定。(ncgege備註)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#!/bin/bash

#rinetd pid check

pid=`ps -ef |grep rinetd |grep -v grep`

if [ $? -ne 0 ]

then

rinetd -c /etc/rinetd.conf

echo "Start executive time:"`date`

else

echo rinetd pid is running...

echo date is :`date`

fi

crontab -l

1 */2 * * * /usr/local/src/pid-check.sh >> /tmp/rinetd.log 2>&1

#每兩個小時監測一次.