博客 / 詳情

返回

Linux系統下使用Iptables配置端口轉發

Enable Port Forwarding using Iptables

現實生活中,港口轉發就像在一個大型公寓大樓裏告訴送貨司機該去哪裏。通常情況下,該建築羣的正門是不對外開放的。但如果裏面有人想要快遞,他們可以告訴保安讓司機進來,並指引他們到特定的公寓。

類似地,在計算機網絡中,端口轉發允許外部的人訪問他們通常無法到達的專用網絡中的服務。當你想讓網絡外的人使用 web 服務器,在你的遊戲服務器上玩遊戲,或者訪問你設置的其他類型的服務時,這是很有用的。

Linux 操作系 使用一個名為 iptables 的工具來設置端口轉發。Iptables 是一個程序,可以讓你設置數據包如何通過你的計算機防火牆的規則,這有助於保持你的網絡安全。這些規則根據它們的作用被分成不同的組。

在本教程中,我們將向您展示如何在 Linux 系統上使用 iptables 設置端口轉發。

必備條件

  1. A Linux machine with root or sudo access.
  2. The iptables package should be installed.

Step 1: Install Iptables

首先,確保在 Linux 機器上安裝了 iptables 包。

Debian / Ubuntu

sudo apt update 
sudo apt install iptables
  • CentOS / Fedora / RHEL
sudo dnf install iptables

Step 2: Check Existing Rules

在開始修改 iptables 規則之前,最好先查看一下當前的規則。

sudo iptables -L -v -n

-L 列出規則,-v 顯示更詳細的信息,-n 以數字格式顯示 IP 地址和端口號。

Step 3: Enable IP Forwarding

為了允許在內核級別轉發,我們需要啓用 IP 轉發。

編輯 /etc/sysctl.conf 配置文件

sudo nano /etc/sysctl.conf

添加或取消註釋下面一行

net.ipv4.ip_forward=1

應用更改,執行如下命令,這將確保在啓動時啓用 IP 轉發。

sudo sysctl -p

Step 4: Configure the Forwarding Rule

要將流量從一個端口轉發到另一個端口,請使用以下命令

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

8080 替換為系統接收流量的端口號,將 192.168.1.100 替換為希望轉發流量的設備的 IP 地址,將 80 替換為目的設備的端口號。

Step 5: Masquerade the IP

最後,為了確保返回數據包的正確路由,您應該使用 MASQUERADE 目標,它將用傳出網絡接口的 IP 地址偽裝傳入數據包的 IP 地址。

sudo iptables -t nat -A POSTROUTING -j MASQUERADE

Step 6: Save the Changes

永久保存這些規則,以便在重新啓動後保持它們。

在 Ubuntu / Debian 中,你可以使用iptables-persistent 包,使用以下命令安裝它。

sudo apt install iptables-persistent

在安裝過程中,它會詢問您是否要保存現有的 iptables 規則,IPv4 和 IPv6 規則均選擇“Yes”。

在 CentOS / Fedora / RHEL 系統中,可以直接保存。

sudo service iptables save

規則將保存到 /etc/sysconfig/iptables 配置文件中。

Step 7: Verify the Configuration

可以通過在其他設備上連接源端口來驗證端口轉發是否正常。您可以使用 nc、telnet 或 curl 之類的工具來驗證這一點。

記住檢查是否有任何現有防火牆規則或安全組可能阻止對源或目標端口的訪問。

我的開源項目

酷瓜雲課堂-開源知識付費解決方案

  • course-tencent-cloud(酷瓜雲課堂 - gitee倉庫)
  • course-tencent-cloud(酷瓜雲課堂 - github倉庫)
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.