1. 程式人生 > >linux-iptables

linux-iptables

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