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
Chain FORWARD (policy ACCEPT)
target prot opt source destination
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 刷新策略
[root@desktop ~]# service iptables save
命令格式如下:
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
[root@desktop ~]# iptables -F 刷新策略
測試:
1)出去的
2)進來的
linux-iptables