如何在Linux中進(jìn)行端口轉(zhuǎn)發(fā)

小樊
81
2024-10-10 08:56:48

在 Linux 中,可以使用 iptablessocat 等工具進(jìn)行端口轉(zhuǎn)發(fā)

方法 1:使用 iptables 進(jìn)行端口轉(zhuǎn)發(fā)

  1. 首先,確保你的系統(tǒng)已安裝了 iptables。在大多數(shù) Linux 發(fā)行版中,它通常是默認(rèn)安裝的。

  2. 打開(kāi)終端,輸入以下命令以創(chuàng)建一個(gè)新的 iptables 規(guī)則,將本地端口 8080 轉(zhuǎn)發(fā)到遠(yuǎn)程服務(wù)器的端口 80:

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination <遠(yuǎn)程服務(wù)器IP>:80
sudo iptables -t nat -A POSTROUTING -j MASQUERADE

<遠(yuǎn)程服務(wù)器IP> 替換為實(shí)際的遠(yuǎn)程服務(wù)器 IP 地址。

  1. 保存 iptables 規(guī)則。這可以通過(guò)以下命令完成:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"

注意:這可能需要 root 權(quán)限。如果需要,請(qǐng)?jiān)诿钋凹由?sudo。

  1. 為了確保在系統(tǒng)重啟后這些規(guī)則仍然生效,你需要安裝 iptables-persistent
sudo apt-get install iptables-persistent

在安裝過(guò)程中,系統(tǒng)會(huì)提示你是否要保存當(dāng)前的 iptables 規(guī)則。選擇“是”以確保規(guī)則在系統(tǒng)重啟后仍然生效。

方法 2:使用 socat 進(jìn)行端口轉(zhuǎn)發(fā)

  1. 在終端中輸入以下命令以安裝 socat(如果尚未安裝):

對(duì)于基于 Debian 的系統(tǒng)(如 Ubuntu):

sudo apt-get install socat

對(duì)于基于 RHEL 的系統(tǒng)(如 CentOS):

sudo yum install socat
  1. 使用以下命令創(chuàng)建一個(gè)端口轉(zhuǎn)發(fā),將本地端口 8080 轉(zhuǎn)發(fā)到遠(yuǎn)程服務(wù)器的端口 80:
socat TCP-LISTEN:8080,fork TCP::<遠(yuǎn)程服務(wù)器IP>:80

<遠(yuǎn)程服務(wù)器IP> 替換為實(shí)際的遠(yuǎn)程服務(wù)器 IP 地址。

現(xiàn)在,當(dāng)有人訪問(wèn)你的本地服務(wù)器上的 8080 端口時(shí),請(qǐng)求將被轉(zhuǎn)發(fā)到遠(yuǎn)程服務(wù)器的 80 端口。

0