iptables

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




1.iptables 實際上就是一種ip信息包過濾型防火牆。就是通過書寫一些接受哪些包,拒絕哪些包的規則,實現數據包的過濾。這些規則存儲在專用的信息包過濾表中,而這些表集成在 Linux 內核中。在信息包過濾表中,規則被分組放在我們所謂的鏈(chain)中。
iptables由兩部分組成:
1>framework:netfilter hooks function鉤子函數,實現網絡過濾器的基本框架。
2>rule utils:iptables 規則管理工具
總體說來,iptables就是由“四表五鏈”組成。
四表:
    filter:過濾,防火牆
    nat :network address translation 網絡地址轉換
    mangle:拆解報文,作出修改,封裝報文
    raw: 關閉nat表上啓用的鏈接追蹤機制

五鏈:
    PREROUTING 數據包進入路由之前
    INPUT 目的地址爲本機
    FORWARD 實現轉發
    OUTPUT 原地址爲本機,向外發送
    POSTROUTING 發送到網卡之前

2.區分SNAT和DNAT
SNAT 和 DNAT 是 iptables 中使用 NAT 規則相關的的兩個重要概念。如果內網主機訪問外網而經過路由時,源 IP 會發生改變,這種變更行爲就是 SNAT;反之,當外網的數據經過路由發往內網主機時,數據包中的目的 IP (路由器上的公網 IP) 將修改爲內網 IP,這種變更行爲就是 DNAT 。

與 SNAT 和 DNAT所對應的兩個鏈分別是  POSTROUTING和PREROUTING  。


3.iptables參數
    -t          ##指定表名稱
    -n         ##不再解析
    -L         ##列出指定表中的策略
    -A         ##增加策略
    -p         ##網絡協議
    -P         ##修改默認策略
    --dport   ##端口
    -s         ##數據來源
    -j          ##動作
     -R        ##修改策略
    -N         ##增加鏈
    -E         ##修改鏈名稱
    -X         ##刪除鏈
    -D         ##刪除指定策略
    -I          ##插入

 ACCEPT   ##允許

  REJECT   ##拒絕

   DROP     ##丟棄

[root@localhost ~]# systemctl status firewalld.service
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
[root@localhost ~]# systemctl start iptables.service
[root@localhost ~]# systemctl enable iptables.service


iptables -t filter -nL           ##查看filter表中的策略
iptables -F                      ##刷掉filter表中的所有策略,當沒有用-t指定表名稱時默認是filter

service iptables save        ##保存當前策略


iptables -t filter -nL            ##查看filter表中的策略
iptables -F                        ##刷掉filter表中的所有策略,當沒有用-t指定表名稱時默認是filter
service iptables save         ##保存當前策略
iptables -A INPUT -i lo -j ACCEPT                         ##允許lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT        ##允許訪問22端口
iptables -A INPUT -s 172.25.254.60 -j ACCEPT       ##允許60主機訪問本機所有端口
iptables -A INPUT -j ACCEPT                                ##拒絕所有主機的數據來源


測試:60主機


iptables -N redhat                         ##增加鏈redhat
iptables -E redhat westos              ##改變鏈名稱
iptables -X westos                         ##刪除westos鏈


iptables -D INPUT                                             ##刪除INPUT鏈中的第二條策略
iptables -I INPUT -p tcp --dport 80 -j REJECT      ##插入策略到INPUT中的第一條


iptables -R INPUT 1 -p tcp --dport 80 -j ACCEPT   ##修改第一條策略
iptable -P INPUT DROP                                      ##把INPUT表中的默認策略改爲drop



iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT    ##策略狀態爲RELATED ESTABLISHED 的策略不再讀取,直接通過
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT                           ##添加策略的狀態爲NEW
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -j REJECT
iptables -t filter -nL




[root@localhost ~]# vim /etc/sysctl.conf            ##內核路由功能開啓 參數保存/proc/sys/net/ipv4/下
[root@localhost ~]# sysctl -p                           ##生效
net.ipv4.ip_forward = 1
[root@localhost ~]# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.25.254.100   ##從eth1出來的數據包做源地址僞裝,僞裝成172.25.254.100
[root@localhost ~]# iptables -t nat -A PREROUTING -i eth1 -j DNAT --to-dest 172.25.0.11               ##從eth1進來的數據包做目的地址轉換,轉換成172.25.0.11
[root@localhost ~]# iptables -t nat -nL


測試:server端ping254網段和0網段均可ping通

發佈了54 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章