################## 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