Linux-Windows 埠轉發

自由早晚亂餘生發表於2019-08-01

在實際的生產環境中,我們為了安全性,會將一些重要的服務(資料庫服務)不開放外網訪問,但是當我們某個時刻由於一些特殊需求,需要進行外網訪問的時候,我們可以通過埠轉發來實現。通過一臺和與服務可以互相訪問的主機,通過該主機進行埠轉發。

  • Windows 埠轉發
  • Linux 埠轉發

一、Windows 埠轉發

windows 主要是通過 netsh 進行埠轉發。

listenaddress  # 本地監聽的ip
listenport # 本地監聽的埠

connectaddress # 轉發請求接收的主機ip
connectport # 轉發請求接收的主機的埠
# 執行命令
netsh  interface  portproxy    add  v4tov4  listenaddress=localip  listenport=localport connectaddress=remoteip  connectport=remoteport
# 檢視現有的配置
netsh  interface  portproxy show all
# 刪除原有的埠轉發
 netsh  interface  portproxy    delete   v4tov4  listenaddress=localip listenport=localport

示例

設定將請求到 本地 IP 192.168.15.89 的埠請求 2222 轉發到 192.168.15.3522

注意: 下面的命令需要用管理員執行。

netsh  interface  portproxy    add  v4tov4  listenaddress=192.168.15.89  listenport=2222  connectaddress=192.168.15.35  connectport=22
PS C:\WINDOWS\system32> netsh  interface  portproxy show all

偵聽 ipv4:                 連線到 ipv4:

地址            埠        地址            埠
--------------- ----------  --------------- ----------
192.168.15.89   2222        192.168.15.35   22

二、Linux 埠轉發

1、rinetd

簡介

官方文件 :https://boutell.com/rinetd/

下載 https://boutell.com/rinetd/http/rinetd.tar.gz

rinetd 可以將 TCP 連線從一個 IP 地址和埠重定向到另外一個 IP 地址和埠。rinetd 是一個單程式服務(非阻塞IO程式),它可以處理配置檔案/etc/rinetd.conf中指定的地址和埠中任意數量的連線。rinetd 不能重定向 FTP,因為 FTP 需要多個 socketrinetd 可以在 Linux 平臺上執行,也可以在 Windows 95/98/NT 平臺上執行。

安裝:

wget https://boutell.com/rinetd/http/rinetd.tar.gz
tar -xzf  rinetd.tar.gz
yum  install gcc -y
cd  rinetd
# (修改埠範圍)
sed -i 's/65536/65535/g' rinetd.c 
# 建立目錄
mkdir /usr/man
# 解壓安裝
make && make install

配置檔案

配置轉發

配置檔案的轉發書寫規則,可以配置多個轉發。

bindaddress bindport connectaddress connectport

示例:

0.0.0.0 2222  192.168.15.89 22
0.0.0.0 3333  192.168.15.89 80

配置過濾規則

rinetd 可以使用過濾規則,來設定可以訪問的主機。(只能使用ip,不能使用主機名)

注意: 填寫的位置應該位於檔案的開頭

allow  #設定允許訪問的主機
deny   #設定拒絕訪問的主機

示例:拒絕 192.168.15 整個網段的請求。

deny 192.168.15.*

配置日誌檔案

預設情況下, rinetd 不會生成日誌檔案。要啟用日誌記錄,請將以下行新增到配置檔案中:

logfile log-file-location

示例:注意 logfile 與後面路徑只有一個空格哦。

logfile /var/log/rinetd.log

配置檔案示例:

deny 192.168.15.*
0.0.0.0 2222  192.168.15.89 22
0.0.0.0 3333  192.168.15.89 80
logfile /var/log/rinetd.log

寫入配置檔案

echo  <<EOF  >/etc/rinetd.conf
deny 192.168.15.*
0.0.0.0 2222  192.168.15.89 22
0.0.0.0 3333  192.168.15.89 80
logfile /var/log/rinetd.log
EOF

執行和管理

# 啟動 rinetd
rinetd

# 設定開機自啟
echo rinetd >>/etc/rc.local

# 暫停 ,通過kill pid
kill `cat   /var/run/rinetd.pid`

# 使用其他配置檔案
rinetd -c  /opt/rinetd.conf

我們在上面使用的埠,記得在防火牆新增放行規則。

iptablesFirewalld 進行埠轉發的話我們後面進行補充。

相關文章