32.filter表案例 nat表應用 (iptables)

10.15 iptables filter表案例linux

10.16/10.17/10.18 iptables nat表應用vim

 

 

10.15 iptables filter表案例:windows

 

~1. 寫一個具體的iptables小案例,需求是把80端口、22端口、21 端口放行。可是,22端口我要指定一個IP段,只有這個IP段的IP能訪問到。其餘段的一律拒絕。須要經過一個腳原本指定(腳本可理解爲一個批量執行的命令)、bash

vim /usr/local/sbin/iptables.sh 加入如下內容網絡

#! /bin/bash 經過腳原本實現tcp

ipt=「/usr/sbin/iptables」 首先定義ipt這個變量,下面頻繁用到,不至於那麼繁瑣(寫腳本時儘可能用絕對路徑)命令行

$ipt -F 清空以前的規則 (咱們沒有-t指定一個表。因此爲filter表)3d

$ipt -P INPUT DROP 指定INPUT的默認規則爲DORP(也是爲何要用腳本的緣由,不至於不能遠程鏈接)視頻

$ipt -P OUTPUT ACCEPT 指定OUTPUT的默認規則爲ACCETP(也就是默認規則)server

$ipt -P FORWARD ACCEPT 指定FORWARD的默認規則爲ACCETP(也就是默認規則)

而後下面加一些規則出來

$ipt -A INPUT -m state --state RELATED(可理解爲連接的其餘連接),ESTABLISHED(即爲保持連接) -j ACCEPT

必需要寫的

制定了一些狀態,把他們放行。這些不太經常使用,可是要寫進來。由於咱們要知足上面的須要,這些須要總有一個相互連接的過程,爲的是讓他們更順利的連接

$ipt -A INPUT -s 192.168.159.0/24 -p tcp --dport 22 -j ACCEPT 以上需求,按照22端口的規則的數據包放行

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT 以上需求,80端口的數據包放行

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT 以上需求,21端口的數據包放行

保存退出後,要連接他。sh /usr/local/iptables.sh

iptables -nvL可查看

~2. icmp示例

iptables -I INPUT -p icmp --icmp-type 8 -j DROP

ping外面的機器能夠ping通,ping本機就不ping(外面的也ping不通本機)

 

 

實例:

1.

[root@axinlinux-01 ~]# vim /usr/local/sbin/iptables.sh

ipt="/usr/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.159.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@axinlinux-01 ~]# sh /usr/local/sbin/iptables.sh

[root@axinlinux-01 ~]# iptables -nvL

Chain INPUT (policy DROP 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

22 1872 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

0 0 ACCEPT tcp -- * * 192.168.159.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

--

-

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

10.16/10.17/10.18 iptables

 

 

~1. nat表應用

~2. A機器兩塊網卡ens33(192.168.159.128)、ens37(192.168.100.1),ens33能夠上外網,ens37僅僅是內部網絡,B機器只有ens37(192.168.100.100),和A機器ens37能夠通訊互聯

~3. 需求1:可讓B機器鏈接外網

說白了就是作個小路由器(A機器),小路由器能夠上網,那麼電腦就能夠上網

首先,咱們須要兩臺機器。給01添加網卡 實例~3.

~4. A機器上打開路由器轉發 echo "1">/proc/sys/net/ipv4/ip_forward

默認這個路徑文件爲0,即表明沒有開啓內核轉發。由於要使用nat的應用,必需要打開nat的端口轉發

~5. A上執行iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

這條規則,就是想讓100.0這個網段能夠上網

添加這條規則,就能夠上網了

~6. B上設置網關爲192.168.100.1

設置網關的目的:試想一下,你的數據包過去,從A到B,從B到A,我怎麼到A呢?確定的須要一個網關啊,默認網關給他設置好。寫法爲:

route add default gw 192.168.100.1

執行完這個就能夠與公網通訊了(也就是01的IP)。咱們在設置一下dns(vi etc/resolv.conf),就能夠與外網通訊了。

vi以後加上 nameserver 119.29.29.29 這個是dns的公共dns.詳見實例,~5.

其實到這,就會發現,A機器(01)就是個路由器。B機器(02)經過A機器(01)上網

~7. 需求2:C機器只能和A通訊,讓C機器能夠直接連通B機器的22端口

意思是,遠程鏈接B機器。由於A機器能夠遠程,經過A機器跳轉到B機器,達到遠程鏈接B的目的。而這個就叫作「端口映射」

把B機器的22端口映射出來。A機器的端口已經了吧,是能夠遠程的。咱們把他映射成其餘的。也就是說,咱們訪問這個其餘的端口,實際上就是訪問的B機器的22端口。從而達到遠程B機器的目的。如圖:

~8. A上打開路由器轉發echo "1">/proc/sys/net/ipv4/ip_forward

一樣的打開端口轉發

~9. A上執行 iptables -t nat -A PREROUTING -d 192.168.159.150 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

這個是進來的,個人是159.128,給他轉發到100.100的22端口

~9. A上執行 iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.159.150

這是回來的包,回來的包也要作一個操做

就從100.100回來的包,通過這個A機器,給他在作一個SNAT操做,把目標地址改爲159.128

~10. B上設置網關爲192.168.100.1

要給B加上網關,同樣的操做

route add default gw 192.168.100.1

 

實例:

~3.

首先準備01 的需求

 

6.選擇網絡適配器2,點lan區段(至關於連到內網的交換機上,這個交換機windows機器是連不上的。咱們這兩臺機器01和02咱們連上同一個交換機就能夠通訊了)

 

11.咱們02也相同的連上一樣的lan區段(也就是連上一樣的交換機)

以上準備工做已完成,啓動機器(注意,此時咱們遠程不上02,是由於改爲了lan區段)

12.此時01上,ifconfig會出現新的網卡ens37,咱們要修改他的配置IP、網段,能夠手動命令行來設置

ifconfig ens37 192.168.100.1/24 (固然只是在內存中更改的,重啓就沒有了,想要永久生效,就要編輯配置文件。須要cp ens33的,去修改好幾個地方)

[root@axinlinux-01 ~]# ifconfig ens37 192.168.100.1/24

這樣兩塊網卡就設置好了。外網(ens33)內網(ens37)

13.那再來設置02機器的需求

因任務須要,保險起見。咱們能夠先ifdown掉ens33.這樣02只跟01通訊

14.一樣的咱們根據需求,能夠用手動命令行來設置02的IP

小案例:阿鑫在具體修改ens37的時候,並無ens37這個網卡。從新添加了新的網卡,而且鏈接了一樣01的lan區段,纔有的ens37這個網卡

ifconfig ens37 192.168.100.100/24

小案例:阿銘視頻中,ping 01是ping不通的,是由於01 ens37的IP莫名沒有了,有ifconfig設置了一下,就行了

以上,準備工做已所有完成(~2.的準備工做完成)

 

~4.

[root@axinlinux-01 ~]# cat /proc/sys/net/ipv4/ip_forward

0 默認0,沒有開啓內核轉發

[root@axinlinux-01 ~]# echo "1">/proc/sys/net/ipv4/ip_forward 修改參數

[root@axinlinux-01 ~]# cat /proc/sys/net/ipv4/ip_forward

1 已打開

 

~5.

route -n查看網關,顯示沒有網關。 route add default gw 192.168.100.1設置默認爲這個網關

~6.

vi etc/resolv.conf

這個時候就能夠ping通這個公共dns了。固然也能夠ping通外網了。可是外網ping不一樣這個。

相關文章
相關標籤/搜索