如何把iptables外網(wǎng)端口全部映射到內(nèi)網(wǎng)一臺主機上
利用iptables把外網(wǎng)端口全部映射到內(nèi)網(wǎng)一臺主機上,有具體的操作過程:
etc/init.d/iptables start 啟動iptables
初始化iptables,刪除之前的規(guī)則,
iptables -F
iptables -X
iptables -Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
允許SSH進入,要不然等下就連不上去了
iptables -A INPUT -p TCP --dport 22 -j ACCEPT
設(shè)置默認(rèn)出入站的規(guī)則
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
載入相應(yīng)的模塊
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
配置默認(rèn)的轉(zhuǎn)發(fā)規(guī)則
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
允許內(nèi)網(wǎng)連接
iptables -A INPUT -i 內(nèi)網(wǎng)網(wǎng)卡名(比如eth1) -j ACCEPT
啟用轉(zhuǎn)發(fā)功能
echo "1" > /proc/sys/net/ipv4/ip_forward
配置源NAT,允許內(nèi)網(wǎng)通過主機nat上網(wǎng),即所謂的網(wǎng)絡(luò)共享
iptables -t nat -A POSTROUTING -s 內(nèi)網(wǎng)網(wǎng)卡名 -o 外網(wǎng)網(wǎng)卡名 -j MASQUERADE
把FTP服務(wù)器映射到外網(wǎng)
iptables -t nat -A PREROUTING -p tcp -d 58.222.1.3 --dport 21 -j DNAT --to 192.168.0.211:21
結(jié)束,別忘了保存
service iptables save
192.168.0.211的網(wǎng)關(guān)應(yīng)該設(shè)成這成主機192.168.0.1。這樣就行了。iptables -t nat -A PREROUTING -d XXX.XXX.XXX.XXX -p tcp --dport 8767 -j dnat --to 192.168.1.3:?? OUTPUT 二個 chain 作用。
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
#p#
IP 偽裝
使內(nèi)部網(wǎng)路的封包經(jīng)過偽裝之后,使用對外的 eth0 網(wǎng)卡當(dāng)作代表號,對外連線。作法如下∶
###-----------------------------------------------------###
# 啟動內(nèi)部對外轉(zhuǎn)址
###-----------------------------------------------------###
iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/16 -j SNAT --to-source $FW_IP
上述指令意指∶把 172.16.0.0/16 這個網(wǎng)段,偽裝成 $FW_IP 出去。
虛擬主機
利用轉(zhuǎn)址、轉(zhuǎn) port 的方式,使外部網(wǎng)路的封包,可以到達(dá)內(nèi)部網(wǎng)路中的伺服主機,俗稱虛擬主機。這種方式可保護伺服主機大部份的 port 不被外界存取,只開放公開服務(wù)的通道(如 Web Server port 80),因此安全性甚高。
作法如下∶
###-----------------------------------------------------###
# 啟動外部對內(nèi)部轉(zhuǎn)址
###-----------------------------------------------------###
# 凡對 $FW_IP:80 連線者, 則轉(zhuǎn)址至 172.16.255.2:80
iptables -t nat -A PREROUTING -i eth0 -p tcp -d $FW_IP --dport 80 -j DNAT --to-destination 172.16.255.2:80
開放內(nèi)部主機可以 telnet 至外部的主機
開放內(nèi)部網(wǎng)路,可以 telnet 至外部主機。
作法如下∶(預(yù)設(shè) policy 為 DROP)
###-----------------------------------------------------###
# open 外部主機 telnet port 23
###-----------------------------------------------------###
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 23 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 23 -d $FW_IP --dport 1024:65535 -j ACCEPT
開放郵包轉(zhuǎn)遞通道
開放任意的郵件主機送信包給你的 Mail Server,而你的 Mail Server 也可以送信包過去。
作法如下∶(預(yù)設(shè) policy 為 DROP)
###-----------------------------------------------------###
# open SMTP port 25
###-----------------------------------------------------###
# 以下是∶別人可以送信給你
iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 1024:65535 -d $FW_IP --dport 25 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 25 -d any/0 --dport 1024:65535 -j ACCEPT
# 以下是∶你可以送信給別人
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 25 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 25 -d $FW_IP --dport 1024:65525 -j ACCEPT
開放對外離線下載信件的通道
開放內(nèi)部網(wǎng)路可以對外部網(wǎng)路的 POP3 server 取信件。
作法如下∶(預(yù)設(shè) policy 為 DROP)
###-----------------------------------------------------###
# open 對外部主機的 POP3 port 110
###-----------------------------------------------------###
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 110 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 110 -d $FW_IP --dport 1024:65535 -j ACCEPT
開放觀看網(wǎng)頁的通道
開放內(nèi)部網(wǎng)路可以觀看外部網(wǎng)路的網(wǎng)站。
作法如下∶(預(yù)設(shè) policy 為 DROP)
###-----------------------------------------------------###
# open 對外部主機的 HTTP port 80
###-----------------------------------------------------###
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 80 -d $FW_IP --dport 1024:65535 -j ACCEPT#p#
#p#
開放查詢外部網(wǎng)路的 DNS 主機
開放內(nèi)部網(wǎng)路,可以查詢外部網(wǎng)路任何一臺 DNS 主機。
作法如下∶(預(yù)設(shè) policy 為 DROP)
###-----------------------------------------------------###
# open DNS port 53
###-----------------------------------------------------###
# ***次會用 udp 封包來查詢
iptables -A OUTPUT -o eth0 -p udp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT
# 若有錯誤,會改用 tcp 封包來查詢
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT
# 開放這臺主機上的 DNS 和外部的 DNS 主機互動查詢∶使用 udp
iptables -A OUTPUT -o eth0 -p udp -s $FW_IP --sport 53 -d any/0 --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d $FW_IP --dport 53 -j ACCEPT
# 開放這臺主機上的 DNS 和外部的 DNS 主機互動查詢∶使用 tcp
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 53 -d any/0 --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! -y -s any/0 --sport 53 -d $FW_IP --dport 53 -j ACCEPT
開放內(nèi)部主機可以 ssh 至外部的主機
開放內(nèi)部網(wǎng)路,可以 ssh 至外部主機。
作法如下∶(預(yù)設(shè) policy 為 DROP)
###-----------------------------------------------------###
# open 外部主機 ssh port 22
###-----------------------------------------------------###
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 22 -d $FW_IP --dport 1024:65535 -j ACCEPT
# 以下是 ssh protocol 比較不同的地方
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1020:1023 -d any/0 --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 22 -d $FW_IP --dport 1020:1023 -j ACCEPT
開放內(nèi)部主機可以 ftp 至外部的主機
開放內(nèi)部網(wǎng)路,可以 ftp 至外部主機。
作法如下∶(預(yù)設(shè) policy 為 DROP)
###-----------------------------------------------------###
# open 對外部主機 ftp port 21
###-----------------------------------------------------###
# 以下是打開命令 channel 21
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 21 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 21 -d $FW_IP --dport 1024:65535 -j ACCEPT
# 以下是打開資料 channel 20
iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 20 -d $FW_IP --dport 1024:65535 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 1024:65535 -d any/0 --dport 20 -j ACCEPT
# 以下是打開 passive mode FTP 資料通道
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 1024:65535 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 1024:65535 -d $FW_IP --dport 1024:65535 -j ACCEPT
開放 ping
可以對外 ping 任何一臺主機。
作法如下∶(預(yù)設(shè) policy 為 DROP)
iptables -A OUTPUT -o eth0 -p icmp -s $FW_IP --icmp-type 8 -d any/0 -j ACCEPT
iptables -A INPUT -i eth0 -p icm -s any/0 --icmp-type 0 -d $FW_IP -j ACCEPT 、
通過上文的文章的描寫和例子的說明,我們可以清楚了解到把iptables外網(wǎng)端口全部映射到內(nèi)網(wǎng)一臺主機上的具體過程!
【編輯推薦】
- 配置Linux 內(nèi)核并利用iptables 做端口映射
- iptables映射端口具體操作
- linux下清空所有iptables規(guī)則
- 用iptables做地址映射
- 保存iptables的防火墻規(guī)則的方法
- iptables日志通過MySQL來保存
- 關(guān)掉Iptables防火墻的相關(guān)的命令