国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

配置iptables實現本地端口轉發的方法詳解

2020-07-10 11:14:12
字體:
來源:轉載
供稿:網友


場景
假如你在用 resin 調試一個 Web 程序,需要頻繁地重啟 resin。這個 Web 程序需要開在 80 端口上,而 Linux 限制 1024 以下的端口必須有 root 權限才能開啟。但是你又不愿意在調程序的時候總是開著一個 root 終端。在這種情況下,你可以把 resin 開在默認的 8080 端口上,然后使用 iptables 來實現和真的把服務開在 80 端口上一樣的效果。
方法
將與 80 端口的 TCP 連接轉接到本地的 8080 端口上。使用 DNAT (Destination Network Address Translation) 技術可以滿足這一要求。因為 iptables 在處理本地連接和遠程連接的方法不同,所以需要分開處理。下面假設本機的 IP 是 192.168.4.177。
遠程連接
遠程連接指的是由另外一臺機器連接到這臺機器上。這種連接的數據包在 iptables 會首先經過 PREROUTING 鏈,所以只需在 PREROUTING 鏈中作 DNAT。

復制代碼
代碼如下:

# iptables -t nat -A PREROUTING -p tcp -i eth0 -d 192.168.4.177 --dport 80 -j DNAT --to 192.168.4.177:8080

本地連接
本地連接指的是在本機上,用 127.0.0.1 或者本機 IP 來訪問本機的端口。本地連接的數據包不會通過網卡,而是由內核處理后直接發給本地進程。這種數據包在 iptables 中只經過 OUTPUT 鏈,而不會經過 PREROUTING 鏈。所以需要在 OUTPUT 鏈中進行 DNAT。除了對 127.0.0.1 之外,對本機 IP (即 192.168.4.177) 的訪問也屬于本地連接。

復制代碼
代碼如下:

# iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8080
# iptables -t nat -A OUTPUT -p tcp -d 192.168.4.177 --dport 80 -j DNAT --to 127.0.0.1:8080

注意事項
你也許需要通過以下命令打開 IP 轉發:

復制代碼
代碼如下:

# echo 1 > /proc/sys/net/ipv4/ip_forward

在進行試驗時,如果要重新設置 iptables,需要首先清空 nat 表:

復制代碼
代碼如下:

# iptables -F -t nat

實例操作
這里將本地接口IP 61.144.a.b 的3389端口 轉發到 116.6.c.d的3389      (主要訪問到61.144.a.b的3389端口,就會跳轉到116.6.c.d的3389)
1、 首先應該做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1 默認是0    這樣允許iptalbes FORWARD。
2、 service iptables stop  關閉防火墻
3、 重新配置規則

復制代碼
代碼如下:

iptables -t nat -A PREROUTING --dst 61.144.a.b -p tcp --dport 3389 -j DNAT --to-destination 116.
6.c.d:3389
iptables -t nat -A POSTROUTING --dst 116.6.c.d -p tcp --dport 3389 -j SNAT --to-source 61.144.a.b
service iptables save

        將當前規則保存到 /etc/sysconfig/iptables
        若你對這個文件很熟悉直接修改這里的內容也等于命令行方式輸入規則。
5、 啟動iptables 服務, service iptables start


可以寫進腳本,設備啟動自動運行;


復制代碼
代碼如下:

# vi /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.</p><p>touch /var/lock/subsys/local</p><p>sh /root/myshipin.log
---------------------------------------------------------------------
vi myshipin.log
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.</p><p>iptables -F -t nat
iptables -t nat -A PREROUTING --dst 61.144.a.b -p tcp --dport 3389 -j DNAT --to-destination 116.6.c.d:3389
iptables -t nat -A POSTROUTING --dst 116.6.a.b -p tcp --dport 3389 -j SNAT --to-source 61.144.c.d
~
----------------------------------------------------------------
TCP</p><p>iptables -t nat -A PREROUTING --dst 61.144.a.b -p tcp --dport 9304 -j DNAT --to-destination 10.94.a.b:9304
iptables -t nat -A POSTROUTING --dst 10.94.a.b -p tcp --dport 9304 -j SNAT --to-source 61.144.a.b</p><p>UDP
iptables -t nat -A PREROUTING --dst 61.144.a.b -p udp --dport 9305 -j DNAT --to-destination 10.94.a.b:9305
iptables -t nat -A POSTROUTING --dst 10.94.a.b -p udp --dport 9305 -j SNAT --to-source 61.144.a.b

另:

iptables配置文件的位置:/etc/sysconfig/iptables 外網地址發變化在配置文件里修改就可以了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绩溪县| 定襄县| 兰坪| 建瓯市| 克拉玛依市| 隆德县| 漯河市| 舞钢市| 永德县| 福安市| 嘉黎县| 安图县| 怀化市| 大悟县| 五寨县| 江山市| 金坛市| 龙海市| 永新县| 德格县| 望谟县| 嘉祥县| 杨浦区| 黎城县| 石柱| 小金县| 华容县| 瓦房店市| 宁陕县| 沧源| 辉南县| 玛纳斯县| 涡阳县| 成武县| 绵阳市| 宁都县| 温宿县| 通化县| 邵东县| 新乐市| 缙云县|