73.fileter表案例,NAT表的應用

fileter表案例

要求如下:
只針對filter表,預設策略INPUT鏈DROP,其他兩個鏈ACCEPT,然後針對192.168.204.0/24開通22端口,對所有網段開放80端口,對所有網段開放21端口。
這個需求不算複雜,但是因爲有多條規則,所以最好寫成腳本的形式。腳本內容如下
root@zlinux ~]# cat /usr/local/sbin//iptables.sh
cat: /usr/local/sbin//iptables.sh: 沒有那個文件或目錄
[root@localhost /]# vim !$
vim /usr/local/sbin//iptables.sh
編輯上面的文件,把下面的內容添加進去
#! /bin/bash
ipt="/sbin/iptables"
$ipt -F //清空規則
$ipt -P INPUT DROP //指定INPUT鏈默認動作DROP
$ipt -P OUTPUT ACCEPT //指定OUTPUT鏈默認動作ACCEPT
$ipt -P FORWARD ACCEPT //指定OUTPUT鏈默認動作ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //指定狀態放行
$ipt -A INPUT -s 192.168.204.0/24 -p tcp --dport 22 -j ACCEPT //針對ip段開通22端口
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT //對所有網段開通80端口
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT //對所有網段開通21端口

[root@localhost /]# cat /usr/local/sbin/iptables.sh #查看文件內容
#! /bin/bash

ipt="/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A INPUT -s 192.168.204.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
[root@localhost /]#

[root@localhost /]# sh /usr/local/sbin/iptables.sh #執行文件

root@localhost /]# iptables -nvL #查看規則
Chain INPUT (policy DROP 133 packets, 10525 bytes)
pkts bytes target prot opt in out source destination
271 20528 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- 192.168.204.0/24 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 155 packets, 18392 bytes)
pkts bytes target prot opt in out source destination

Chain VL (0 references)
pkts bytes target prot opt in out source destination
[root@localhost /]#

注:關於icmp的包有一個比較常見的應用:
[root@zlinux ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP
--icmp-type 這個選項是要跟-p icmp 一起使用的,後面指定類型編號。這個8指的是能在本機ping通其他機器,而其他機器不能ping通本機。這個有必要記一下。


NAT表應用

llinux的iptables功能是十分強大的,只有想不到沒有做不到!也就是說只要你能夠想到的關於網絡的應用,linux都能幫你實現。在日常生活中相信你接觸過路由器吧,它的功能就是分享上網。本來一根網線過來(其實只有一個公網IP),通過路由器後,路由器分配了一個網段(私網IP),這樣連接路由器的多臺pc都能連接intnet而遠端的設備認爲你的IP就是那個連接路由器的公網IP。這個路由器的功能其實就是由linux的iptables實現的,而iptables又是通過nat表作用而實現的這個功能。那麼直接來舉例說明:
現有條件:
A機器兩塊網卡ens33(192.168.204.128)、ens37(192.168.100.1),ens33可以上外網,ens37僅僅是內部網絡,B機器只有ens37(192.168.100.100),和A機器ens37可以通信互聯。
爲達到實驗條件,先準備兩臺虛擬機:
1、在VMware克隆一下現有的虛擬機(A機器),並把克隆的虛擬機命名爲zhulinux2(B機器);
2、對A機器的網卡進行增加,並且設置成LAN區段爲“自定義區段”,表示內部網絡地址;

73.fileter表案例,NAT表的應用
73.fileter表案例,NAT表的應用

3、對B機器的網卡設置成ens37,IP地址192.168.100.100/24,並把網絡適配器改成LAN區段,與A機器一樣,如下圖所示:
73.fileter表案例,NAT表的應用

4、設置A機器ens37IP![]
73.fileter表案例,NAT表的應用

5、設置B機器的ens37網址,先關閉ens33網卡,因爲可以訪問外網:
73.fileter表案例,NAT表的應用

需求:
1、可以讓B機器連接外網:
A機器操作:
[root@zlinux ~]# echo "1">/proc/sys/net/ipv4/ip_forward //打開路由轉發功能
[root@zlinux ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
B機器操作,設置默認網關,設置好之後就可以連接外網了:
73.fileter表案例,NAT表的應用

這個ping百度,是因爲設置了dns。
2、C機器只能和A通信,讓C機器可以直接連通B機器的22端口:
A機器操作:
[root@zlinux ~]# iptables -t nat -A PREROUTING -d 192.168.204.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
[root@zlinux ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.204.128
[root@zlinux ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- 0.0.0.0/0 192.168.204.128 tcp dpt:1122 to:192.168.100.100:22

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
3 213 MASQUERADE all -- ens33 192.168.100.0/24 0.0.0.0/0
0 0 SNAT all --
* 192.168.100.100 0.0.0.0/0 to:192.168.204.128

73.fileter表案例,NAT表的應用
至此,連接成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章