Linux-Windows 端口轉發

在實際的生產環境中,咱們爲了安全性,會將一些重要的服務(數據庫服務)不開放外網訪問,可是當咱們某個時刻因爲一些特殊需求,須要進行外網訪問的時候,咱們能夠經過端口轉發來實現。經過一臺和與服務能夠互相訪問的主機,經過該主機進行端口轉發。linux

  • Windows 端口轉發
  • Linux 端口轉發

1、Windows 端口轉發

windows 主要是經過 netsh 進行端口轉發。shell

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數據庫

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

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

2、Linux 端口轉發

一、rinetd

簡介

官方文檔 :https://boutell.com/rinetd/安全

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

rinetd 能夠將 TCP 鏈接從一個 IP 地址和端口重定向到另一個 IP 地址和端口。rinetd 是一個單進程服務(非阻塞IO進程),它能夠處理配置文件/etc/rinetd.conf中指定的地址和端口中任意數量的鏈接。rinetd 不能重定向 FTP,由於 FTP 須要多個 socketrinetd 能夠在 Linux 平臺上運行,也能夠在 Windows 95/98/NT 平臺上運行。socket

安裝:

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

配置文件

配置轉發日誌

配置文件的轉發書寫規則,能夠配置多個轉發。code

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

相關文章
相關標籤/搜索