Linux-Windows 端口轉發


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

  • 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.35 端口 22

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

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 進行端口轉發的話我們后面進行補充。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM