Linux如何使用iptables設(shè)置端口轉(zhuǎn)發(fā)?
在Linux系統(tǒng)中,iptables是一個(gè)非常強(qiáng)大的防火墻工具,用于管理網(wǎng)絡(luò)數(shù)據(jù)包的過(guò)濾和轉(zhuǎn)發(fā)。它允許系統(tǒng)管理員根據(jù)特定的規(guī)則來(lái)控制數(shù)據(jù)包的流動(dòng),從而保護(hù)網(wǎng)絡(luò)安全并實(shí)現(xiàn)網(wǎng)絡(luò)流量的控制和管理。

iptables的作用
iptables可以根據(jù)預(yù)先定義的規(guī)則過(guò)濾網(wǎng)絡(luò)數(shù)據(jù)包,允許或者拒絕它們通過(guò)系統(tǒng)。這樣可以防止未經(jīng)授權(quán)的訪問(wèn)和網(wǎng)絡(luò)攻擊。
iptables可以實(shí)現(xiàn)網(wǎng)絡(luò)地址轉(zhuǎn)換,將內(nèi)部網(wǎng)絡(luò)IP地址映射到外部網(wǎng)絡(luò)IP地址,或者將外部網(wǎng)絡(luò)IP地址映射到內(nèi)部網(wǎng)絡(luò)IP地址。這在實(shí)現(xiàn)端口轉(zhuǎn)發(fā)、IP偽裝等功能時(shí)非常有用。
iptables可以將進(jìn)入系統(tǒng)的數(shù)據(jù)包重定向到另一個(gè)地址和端口,從而實(shí)現(xiàn)端口轉(zhuǎn)發(fā),這在構(gòu)建服務(wù)器、實(shí)現(xiàn)內(nèi)部網(wǎng)絡(luò)服務(wù)對(duì)外訪問(wèn)等場(chǎng)景中非常常見(jiàn)。
iptables允許對(duì)數(shù)據(jù)包進(jìn)行一些修改操作,如更改目標(biāo)地址、端口等,以滿足特定的需求。
iptables的工作原理
iptables通過(guò)管理系統(tǒng)內(nèi)核中的網(wǎng)絡(luò)數(shù)據(jù)包過(guò)濾規(guī)則來(lái)實(shí)現(xiàn)其功能。當(dāng)一個(gè)數(shù)據(jù)包到達(dá)Linux系統(tǒng)時(shí),內(nèi)核會(huì)將其傳遞給iptables進(jìn)行處理。iptables根據(jù)預(yù)先定義的規(guī)則集來(lái)判斷如何處理這個(gè)數(shù)據(jù)包,可以允許其通過(guò)、丟棄、重定向等。
iptables規(guī)則是有序的,按照規(guī)則集中的順序逐條進(jìn)行匹配。一旦找到與數(shù)據(jù)包匹配的規(guī)則,iptables將按照這條規(guī)則定義的操作來(lái)處理數(shù)據(jù)包,并停止對(duì)規(guī)則集的后續(xù)匹配。如果數(shù)據(jù)包與規(guī)則集中的任何規(guī)則都不匹配,則根據(jù)默認(rèn)策略來(lái)處理數(shù)據(jù)包,通常是允許或者拒絕。
iptables基礎(chǔ)概念和術(shù)語(yǔ)
1. 鏈(Chain)
在iptables中,鏈?zhǔn)且幌盗幸?guī)則的集合,用于指示如何處理進(jìn)入系統(tǒng)的數(shù)據(jù)包。每個(gè)數(shù)據(jù)包在到達(dá)系統(tǒng)時(shí)都會(huì)按照預(yù)定義的鏈進(jìn)行處理,根據(jù)鏈中的規(guī)則來(lái)確定其后續(xù)的操作。常見(jiàn)的鏈包括:
- INPUT:用于處理進(jìn)入系統(tǒng)的數(shù)據(jù)包。
- OUTPUT:用于處理從系統(tǒng)發(fā)出的數(shù)據(jù)包。
- FORWARD:用于處理經(jīng)過(guò)系統(tǒng)的數(shù)據(jù)包(不是直接進(jìn)入或者發(fā)出系統(tǒng)的)。
2. 規(guī)則(Rule)
規(guī)則是iptables中的基本構(gòu)建單元,用于定義對(duì)數(shù)據(jù)包的處理方式。每條規(guī)則包括匹配條件和動(dòng)作兩部分。當(dāng)一個(gè)數(shù)據(jù)包到達(dá)時(shí),iptables會(huì)按照規(guī)則集中的順序逐條匹配規(guī)則,一旦找到匹配的規(guī)則,就會(huì)執(zhí)行規(guī)則中定義的動(dòng)作。
3. 表(Table)
表是一組相關(guān)規(guī)則的集合,用于組織和管理iptables規(guī)則。每個(gè)表都包含一組預(yù)定義的鏈,用于特定類型的數(shù)據(jù)包處理。常見(jiàn)的表包括:
- filter表:用于數(shù)據(jù)包過(guò)濾。
- nat表:用于網(wǎng)絡(luò)地址轉(zhuǎn)換。
- mangle表:用于數(shù)據(jù)包修改。
- raw表:用于原始數(shù)據(jù)包處理。
4. 匹配條件(Match)
匹配條件用于定義規(guī)則中數(shù)據(jù)包匹配的條件??梢愿鶕?jù)源地址、目標(biāo)地址、協(xié)議、端口等多種條件來(lái)匹配數(shù)據(jù)包。如果數(shù)據(jù)包滿足規(guī)則中定義的所有匹配條件,那么這條規(guī)則就會(huì)被執(zhí)行。
5. 動(dòng)作(Target)
動(dòng)作定義了當(dāng)規(guī)則匹配成功時(shí)要執(zhí)行的操作。常見(jiàn)的動(dòng)作包括:
- ACCEPT:允許數(shù)據(jù)包通過(guò)。
- DROP:丟棄數(shù)據(jù)包。
- REJECT:拒絕數(shù)據(jù)包,并發(fā)送拒絕消息給發(fā)送者。
- REDIRECT:重定向數(shù)據(jù)包到另一個(gè)地址和端口。
6. 表和鏈的關(guān)系
表包含鏈,而鏈包含規(guī)則。當(dāng)一個(gè)數(shù)據(jù)包到達(dá)系統(tǒng)時(shí),iptables首先根據(jù)表選擇要使用的鏈,然后在該鏈中逐條匹配規(guī)則,直到找到匹配的規(guī)則或者到達(dá)鏈的末尾。
端口轉(zhuǎn)發(fā)的原理
端口轉(zhuǎn)發(fā)是一種網(wǎng)絡(luò)轉(zhuǎn)發(fā)技術(shù),它允許將來(lái)自一個(gè)端口的數(shù)據(jù)包轉(zhuǎn)發(fā)到另一個(gè)端口。在Linux中,使用iptables可以實(shí)現(xiàn)端口轉(zhuǎn)發(fā),通過(guò)修改數(shù)據(jù)包的目標(biāo)地址和端口來(lái)實(shí)現(xiàn)數(shù)據(jù)包的轉(zhuǎn)發(fā)。
端口轉(zhuǎn)發(fā)的原理可以簡(jiǎn)單概括為以下幾個(gè)步驟:
- 當(dāng)一個(gè)數(shù)據(jù)包到達(dá)系統(tǒng)時(shí),內(nèi)核會(huì)根據(jù)預(yù)定義的iptables規(guī)則集來(lái)處理該數(shù)據(jù)包。
- iptables規(guī)則集中可以包含一些規(guī)則用于端口轉(zhuǎn)發(fā),這些規(guī)則定義了哪些數(shù)據(jù)包需要進(jìn)行轉(zhuǎn)發(fā)以及轉(zhuǎn)發(fā)到哪個(gè)地址和端口。
- 如果一個(gè)數(shù)據(jù)包匹配了端口轉(zhuǎn)發(fā)規(guī)則,iptables會(huì)修改數(shù)據(jù)包的目標(biāo)地址和端口,然后將數(shù)據(jù)包轉(zhuǎn)發(fā)到指定的地址和端口。
- 目標(biāo)地址和端口可以是系統(tǒng)本身上運(yùn)行的服務(wù),也可以是系統(tǒng)外部的其他設(shè)備或服務(wù)。
端口轉(zhuǎn)發(fā)的應(yīng)用場(chǎng)景
端口轉(zhuǎn)發(fā)在實(shí)際應(yīng)用中有很多場(chǎng)景,包括但不限于:
- 將來(lái)自外部網(wǎng)絡(luò)的數(shù)據(jù)包轉(zhuǎn)發(fā)到內(nèi)部網(wǎng)絡(luò)的服務(wù)器,以實(shí)現(xiàn)內(nèi)部網(wǎng)絡(luò)服務(wù)對(duì)外訪問(wèn)。
- 將某一端口上的流量轉(zhuǎn)發(fā)到另一個(gè)內(nèi)部或外部設(shè)備上,以實(shí)現(xiàn)負(fù)載均衡或故障轉(zhuǎn)移。
- 將某一端口上的數(shù)據(jù)包轉(zhuǎn)發(fā)到不同的目標(biāo)地址和端口,以實(shí)現(xiàn)靈活的網(wǎng)絡(luò)配置和管理。
在配置端口轉(zhuǎn)發(fā)時(shí),需要考慮安全性因素,避免被惡意用戶利用進(jìn)行攻擊或者非法訪問(wèn)。可以通過(guò)限制端口轉(zhuǎn)發(fā)的源地址、目標(biāo)地址、端口等條件來(lái)增強(qiáng)安全性,同時(shí)定期審查和更新iptables規(guī)則集也是必要的。
使用iptables進(jìn)行端口轉(zhuǎn)發(fā)的步驟
啟用IPv4轉(zhuǎn)發(fā)
在進(jìn)行端口轉(zhuǎn)發(fā)之前,首先需要確保系統(tǒng)上啟用了IPv4數(shù)據(jù)包轉(zhuǎn)發(fā)功能??梢酝ㄟ^(guò)修改/etc/sysctl.conf文件來(lái)啟用IPv4轉(zhuǎn)發(fā),將以下行取消注釋(如果存在),或者手動(dòng)添加:
代碼語(yǔ)言:bash
net.ipv4.ip_forward=1
然后執(zhí)行以下命令使配置生效:
代碼語(yǔ)言:bash
sudo sysctl -p
添加端口轉(zhuǎn)發(fā)規(guī)則
使用iptables添加端口轉(zhuǎn)發(fā)規(guī)則。例如,如果要將外部網(wǎng)絡(luò)的TCP流量轉(zhuǎn)發(fā)到內(nèi)部服務(wù)器的特定端口,可以使用以下命令:
代碼語(yǔ)言:bash
sudo iptables -t nat -A PREROUTING -p tcp --dport [外部端口] -j DNAT --to-destination [內(nèi)部服務(wù)器IP]:[內(nèi)部端口]
這條規(guī)則將外部端口的TCP流量轉(zhuǎn)發(fā)到內(nèi)部服務(wù)器的指定端口。
允許轉(zhuǎn)發(fā)的流量通過(guò)防火墻
如果系統(tǒng)上啟用了防火墻,需要確保允許轉(zhuǎn)發(fā)的流量通過(guò)防火墻。可以使用以下命令添加允許轉(zhuǎn)發(fā)的規(guī)則:
代碼語(yǔ)言:bash
sudo iptables -A FORWARD -i [進(jìn)入網(wǎng)卡] -o [出去網(wǎng)卡] -p [協(xié)議] --dport [內(nèi)部端口] -j ACCEPT
這條規(guī)則允許來(lái)自指定進(jìn)入網(wǎng)卡、出去網(wǎng)卡、協(xié)議和端口的流量通過(guò)防火墻。
保存和應(yīng)用規(guī)則
一旦添加了端口轉(zhuǎn)發(fā)規(guī)則,務(wù)必保存規(guī)則以確保系統(tǒng)重啟后規(guī)則不會(huì)丟失。可以使用以下命令保存規(guī)則:
代碼語(yǔ)言:bash
sudo iptables-save > /etc/iptables/rules.v4
并且在系統(tǒng)啟動(dòng)時(shí)加載規(guī)則:
代碼語(yǔ)言:bash
sudo iptables-restore < /etc/iptables/rules.v4
將外部HTTP流量轉(zhuǎn)發(fā)到內(nèi)部Web服務(wù)器
假設(shè)內(nèi)部有一臺(tái)Web服務(wù)器運(yùn)行在內(nèi)部網(wǎng)絡(luò)上,IP地址為192.168.1.100,監(jiān)聽(tīng)HTTP的80端口?,F(xiàn)在我們想要將來(lái)自外部網(wǎng)絡(luò)的HTTP流量(端口80)轉(zhuǎn)發(fā)到這臺(tái)服務(wù)器上。
我們可以使用以下iptables規(guī)則來(lái)實(shí)現(xiàn):
代碼語(yǔ)言:bash
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
將外部SSH流量轉(zhuǎn)發(fā)到內(nèi)部服務(wù)器的另一個(gè)SSH端口
假設(shè)內(nèi)部有一臺(tái)SSH服務(wù)器運(yùn)行在內(nèi)部網(wǎng)絡(luò)上,IP地址為192.168.1.101,監(jiān)聽(tīng)SSH的22端口。現(xiàn)在我們想要將來(lái)自外部網(wǎng)絡(luò)的SSH流量(端口22)轉(zhuǎn)發(fā)到這臺(tái)服務(wù)器上的另一個(gè)端口,比如2222端口。
我們可以使用以下iptables規(guī)則來(lái)實(shí)現(xiàn):
代碼語(yǔ)言:bash
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination 192.168.1.101:2222
設(shè)置端口映射
假設(shè)我們有一臺(tái)內(nèi)部服務(wù)器同時(shí)運(yùn)行著Web服務(wù)(端口80)和FTP服務(wù)(端口21)?,F(xiàn)在我們想要將外部網(wǎng)絡(luò)的HTTP流量轉(zhuǎn)發(fā)到Web服務(wù)器,而FTP流量轉(zhuǎn)發(fā)到FTP服務(wù)器。
我們可以使用以下iptables規(guī)則來(lái)實(shí)現(xiàn):
代碼語(yǔ)言:bash
# HTTP流量轉(zhuǎn)發(fā)到Web服務(wù)器 sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80 # FTP流量轉(zhuǎn)發(fā)到FTP服務(wù)器 sudo iptables -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to-destination 192.168.1.102:21
在配置完以上規(guī)則后,可以從外部網(wǎng)絡(luò)嘗試訪問(wèn)相應(yīng)的服務(wù)端口,以驗(yàn)證轉(zhuǎn)發(fā)是否生效。例如,使用瀏覽器訪問(wèn)Web服務(wù)器的IP地址或者使用SSH客戶端連接SSH服務(wù)器的IP地址和端口。
相關(guān)文章

如何 Linux 上列出磁盤信息? 7個(gè)命令輕松搞定
在 Linux 系統(tǒng)中,了解和管理磁盤是非常重要的,無(wú)論是查看可用的磁盤空間、掛載新的磁盤還是調(diào)整分區(qū)大小,都需要準(zhǔn)確地列出系統(tǒng)中的磁盤信息,詳細(xì)內(nèi)容如下2026-02-25
linux下ping本機(jī)沒(méi)反應(yīng)怎么辦? LINUX下ping命令不通的常見(jiàn)原因與排查方
Ping不通,即在使用Ping命令時(shí),無(wú)法接收到任何Ping應(yīng)答報(bào)文的現(xiàn)象,造成這個(gè)問(wèn)題的原因很多,下面我們就來(lái)一一分析和解決方法2025-09-20
htop和top有什么區(qū)別? 一文吃透Linux htop命令安裝和使用指南
htop命令是一個(gè)Linux實(shí)用程序,用于顯示有關(guān)系統(tǒng)進(jìn)程的關(guān)鍵信息,它可以被看作是Windows任務(wù)管理器的Linux版本,Htop更像是一個(gè)交互式程序,因?yàn)樗С质髽?biāo)和鍵盤操作來(lái)在2025-08-09
在linux中刪除文件與文件夾我們可以直接使用rmdir和rm命令就可以刪除了,接下來(lái)是小編為大家收集的Linux下刪除文件命令,希望能幫到大家2025-08-08
linux系統(tǒng)監(jiān)控工具小神器!超全面的Btop安裝和使用指南
Btop是一個(gè)對(duì) Linux top 命令的改進(jìn)版本,提供了更豐富的功能和更好的用戶體驗(yàn),它不僅列出了系統(tǒng)的各種使用情況,包括內(nèi)存、磁盤、網(wǎng)絡(luò)和進(jìn)程,還支持鼠標(biāo)互動(dòng),允許用戶在2025-08-08
深入解析Linux文件系統(tǒng)目錄結(jié)構(gòu)與常用命令詳解
在Linux系統(tǒng)中,文件與目錄的架構(gòu)是分層次進(jìn)行組織的,每個(gè)目錄都承擔(dān)著其特定的職能與角色,今天我們就來(lái)星系解讀一下2025-08-08
Linux工作目錄是什么? Linux查看和切換工作目錄的技巧
工作目錄也叫當(dāng)前目錄或當(dāng)前工作目錄,是 Linux 終端中的一個(gè)核心概念,怎么查看工作目錄和切換工作目錄呢?詳細(xì)請(qǐng)看下文介紹2025-08-08
dig 命令可以查詢各種類型 DNS 記錄信息,下面我們將通過(guò)實(shí)際示例和 dig 命令常用參數(shù)來(lái)詳細(xì)說(shuō)明如何使用 dig 實(shí)用程序2025-08-08
linux重啟命令有哪些? 7個(gè)實(shí)用的Linux系統(tǒng)重啟命令匯總
Linux系統(tǒng)提供了多種重啟命令,常用的包括shutdown -r、reboot、init 6等,不同命令適用于不同場(chǎng)景,本文將詳細(xì)介紹這些命令的使用方法、注意事項(xiàng)以及推薦優(yōu)先級(jí),幫助用戶2025-06-23
如何快速定位到查找的文件? Linux中快速定位文件或命令匯總
在 Linux 中查找文件可以使用多種命令,以下是 最常用的文件查找方法,覆蓋不同場(chǎng)景,詳細(xì)請(qǐng)看下文介紹2025-05-21


