天天看點

linux-iptables

################## iptables ###################

*)安裝服務并啟用##########################

[root@desktop ~]# yum install iptables-services.x86_64  -y   安裝服務

[root@desktop ~]# systemctl stop firewalld               關閉火牆

[root@desktop ~]# systemctl disable firewalld           開機不啟動

[root@desktop ~]# systemctl mask firewalld               鎖住火牆

[root@desktop ~]# systemctl start iptables.service   開啟服務

[root@desktop ~]# systemctl enable iptables.service  開機開啟

*)iptables 相關指令#######################################

[root@desktop ~]# iptables -t filter -L  列出

[root@desktop ~]# iptables -t filter -nL   不做解析

檢視/etc/sysconfig/iptables 檔案

iptables -F 重新整理政策

service iptables save  儲存 

再次檢視,政策被刷掉

[root@desktop ~]# iptables -A INPUT -i lo -j ACCEPT  添加政策  (回環接口)

[root@desktop ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT 添加80端口

[root@desktop ~]# iptables -nL

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT)

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination         

[root@desktop ~]# iptables -A INPUT -j REJECT  此設定後   拒絕所有連接配接

[root@desktop ~]# iptables -D INPUT 4  删除第4條政策

[root@desktop ~]# iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT 在指定位置加入政策

[root@desktop ~]# service iptables save

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]  儲存

[root@desktop ~]# cat /etc/sysconfig/iptables

[root@desktop ~]# iptables -A INPUT -i lo -j ACCEPT

[@top ~]# iptables -A INPUT -s 172.25.12.250 -p tcp --dport 22 -j ACCEPT 比對來自172.25.12.250的資料包

[root@desktop ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT  比對來自80端口的資料包

[root@desktop ~]# iptables -A INPUT -j REJECT     拒絕所有包

[root@desktop ~]# iptables -nL | cat -b  加入行号

[root@desktop ~]# iptables -nL | grep 80 -n  檢視80端口

[root@desktop ~]# iptables -nL | grep -E "INPUT|target"

[root@desktop ~]# iptables -nL | grep -E "INPUT|target" -n

[root@desktop ~]# iptables -nL | grep -E "INPUT|target" -v | cat -b

*)建立鍊

[root@desktop ~]# iptables -N westos  建立鍊

*)更改鍊名稱

[root@desktop ~]# iptables -E westos lh;

*)删除鍊

[root@desktop ~]# iptables -X lh 删除鍊

*)更改政策

[root@desktop ~]# iptables -P INPUT DROP  更改政策

*)基于狀态的比對擴充 (連接配接跟蹤)################

環境:

[root@desktop ~]# iptables -F  重新整理政策

指令格式如下:

iptables -m state --state

»NEW: 該包想要開始一個新的連接配接(重新連接配接或連接配接重定 向)

»RELATED:該 包是屬于某個已建立的連接配接所建立的新連接配接。舉例:FTP的

資料傳輸連接配接和控制連 接之間就是RELATED關系。

»ESTABLISHED:該包屬于某個已建立的連接配接。

»INVALID:該 包不比對于任何連接配接,通常這些包被DROP。

例如:

(1)在INPUT鍊添加一條規則,比對已建立的連接配接或由已建立的連接配接所建

立的新連接配接。即比對任何的TCP回應包。

   #iptables -A INPUT -m state --state RELATED,ESTABLISHED

(2)在INPUT鍊鍊添加一條規則,比對任何從非eth0接口來的連接配接請求

包。

#iptables -A INPUT -m state --state NEW -i !eth0

[root@desktop ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

在INPUT鍊添加一條規則,比對已建立的連接配接或由已建立的連接配接所建立的新連接配接。

[root@desktop ~]# iptables -A INPUT -m state --state NEW -i lo -j ACCEPT

[root@desktop ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT

[root@desktop ~]# iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

[root@desktop ~]# iptables -A INPUT -j REJECT 

*)NAT中的SNAT和DNAT#######################

NAT 是将區域網路的内部位址轉換成公網上合法的ip位址,使内部位址能像有公網位址的主機一樣上網。

SNAT是指在資料從網卡發送出去的時候,把資料包中的源位址部分替換為指定的ip,這樣,

接受方就認為資料包的來源是被替換的那個ip的主機。

DNAT是指資料包從網卡發送出去的時候,修改資料包中的目的ip,表現為如果你想通路A,可是

因為網關做了DNAT,把所有通路A的資料包的目的ip全部修改為B,那麼你實際通路的是B。

因為路由是按照目的位址來選擇的,是以,DNAT是在PREROUTING鍊上來進行的,

而SNAT是在資料包發送出去的時候才進行的,是以,是在POSTROUTING鍊上進行的。

SNAT就是改變轉發資料包的源位址 --to-source:

DNAT就是改變轉發資料包的目的位址 --to-dest:

實驗環境:

1)雙網卡主機

2)另外一台主機,注意ip和網管配置

3)做轉換

[root@desktop ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.12.10   (出去先變成此ip)

[root@desktop ~]# iptables -t nat -A PREROUTING -i eth0 -d 172.25.12.10 -j DNAT --to-dest 172.25.254.1(進來)

[root@desktop ~]# sysctl -a | grep ip_forward

net.ipv4.ip_forward = 0

[root@desktop ~]# vim /etc/sysctl.conf  修改檔案

[root@desktop ~]# sysctl -p  執行

net.ipv4.ip_forward = 1

測試:

1)出去的

2)進來的

 本文轉自 huanzi2017 51CTO部落格,原文連結:http://blog.51cto.com/13362895/2047512

繼續閱讀