iptables防火墙与SNAT和DNAT
1、防火墻分類(lèi)
硬件防火墻 ? 華為E9000 ----------------------------------------- 軟件防火墻 ? ? iptables ? Centos5/6 ? 系統(tǒng)默認(rèn)防火墻 firewalld ? Centos7/8 ? 系統(tǒng)默認(rèn)防火墻2、Linux防火墻基礎(chǔ)
netfilter
-
位于Linux內(nèi)核中的包過(guò)濾功能體系
-
稱(chēng)為L(zhǎng)inux防火墻的”內(nèi)核態(tài)“
iptables
-
位于/sbin/intables,用來(lái)管理防火墻規(guī)則的工具
-
稱(chēng)為L(zhǎng)inux防火墻的”用戶(hù)態(tài)“
netfilter/iptables關(guān)系:
-
netfilter:屬于”內(nèi)核態(tài)“(Kernel Space,又稱(chēng)為內(nèi)核空間)的防火墻功能體系
是內(nèi)核的一部分,由一些數(shù)據(jù)包過(guò)濾表組成,這些表包含內(nèi)核用來(lái)控制數(shù)據(jù)包過(guò)濾處理的規(guī)則集
-
iptables:屬于”用戶(hù)態(tài)“(User space,又稱(chēng)為用戶(hù)空間)的防火墻管理體系
是一種用來(lái)管理Linxu防火墻的命令程序,它使插入、修改和刪除數(shù)據(jù)包過(guò)濾表中的規(guī)則變得更容易,通常位于/sbin/iptabels文件下
-
netfilter/iptables后期簡(jiǎn)稱(chēng)為iptables。iptables是基于內(nèi)核的防火墻,其中內(nèi)置了raw、mangles、nat和filter四個(gè)規(guī)則表。表中所有規(guī)則配置后,立即生效,不需要重啟服務(wù)
?
3、四表五鏈
規(guī)則表的作用:容納各種規(guī)則鏈
規(guī)則鏈的作用:容納各種防火墻規(guī)則
3.1、四表
-
raw表:確定是否對(duì)該數(shù)據(jù)包進(jìn)行狀態(tài)跟蹤。包括兩個(gè)規(guī)則鏈,OUTPUT、PREROUTING
-
mangle表:修改數(shù)據(jù)包內(nèi)容,用來(lái)做流量整形的,給數(shù)據(jù)包設(shè)置標(biāo)記。包括五個(gè)規(guī)則鏈,INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
-
nat表:負(fù)責(zé)網(wǎng)絡(luò)地址轉(zhuǎn)換,用來(lái)修改數(shù)據(jù)包中的源、目標(biāo)IP地址或端口。包括三個(gè)規(guī)則鏈,OUTPUT、PREROUTING、POSTROUTING
-
filter表:負(fù)責(zé)過(guò)濾數(shù)據(jù)包,確定是否放行該數(shù)據(jù)包(過(guò)濾)。包括三個(gè)規(guī)則鏈,INPUT、FORWARD、OUTPUT
優(yōu)先順序
-
數(shù)據(jù)包到達(dá)防火墻時(shí),規(guī)則表之間的優(yōu)先順序raw>mangle>nat>filter
-
?
3.2、五鏈
-
INPUT:處理入站數(shù)據(jù)包,匹配IP為本機(jī)的數(shù)據(jù)包
-
OUTPUT:處理出站數(shù)據(jù)包,一般不在此鏈上做配置
-
FORWARD:處理轉(zhuǎn)發(fā)數(shù)據(jù)包,匹配流經(jīng)本機(jī)的數(shù)據(jù)包
-
PREROUTING:在進(jìn)行路由選擇前處理數(shù)據(jù)包,用來(lái)修改目的地址,用來(lái)做DNAT,相當(dāng)于把內(nèi)網(wǎng)服務(wù)器的IP和客戶(hù)端映射到路由器的外網(wǎng)IP和端口上
-
PSOTOUTING:在進(jìn)行路由選擇后處理數(shù)據(jù)包,用來(lái)修改源地址,用來(lái)做SNAT,相當(dāng)于把內(nèi)網(wǎng)通過(guò)路由器NATZ轉(zhuǎn)換功能實(shí)現(xiàn)內(nèi)網(wǎng)主機(jī)通過(guò)一個(gè)公網(wǎng)IP地址上網(wǎng)
優(yōu)先順序
規(guī)則鏈之間的匹配順序:
主機(jī)型防火墻:
-
入站數(shù)據(jù)(來(lái)自外界的數(shù)據(jù)包,且目標(biāo)地址是防火墻本機(jī)):PREROUTING——>INPUT——>本機(jī)的應(yīng)用程序
-
出站數(shù)據(jù)(從防火墻本機(jī)向外部地址發(fā)送的數(shù)據(jù)包):本機(jī)的應(yīng)用程序——>OUTPUT——>POSTOUTING
網(wǎng)絡(luò)型防火墻:
-
轉(zhuǎn)發(fā)數(shù)據(jù)(需要經(jīng)過(guò)防火墻轉(zhuǎn)發(fā)的數(shù)據(jù)包):PREOUTING——>FORWARD——>POSTOUTING
-
?
規(guī)則鏈內(nèi)的匹配順序
自上向下按順序依次進(jìn)行檢查,找到相匹配的規(guī)則即停止(LOG策略例外,表示記錄相關(guān)日志)
若在該鏈內(nèi)找不到相匹配的規(guī)則,則按該鏈的默認(rèn)策略處理(未修改的狀態(tài)下,默認(rèn)策略為允許)
4、安裝iptables
Centos 7默認(rèn)使用firewalld防火墻,沒(méi)有安裝iptables,若想使用iptables防火墻。必須先關(guān)閉firewalld防火墻,再安裝iptables
[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# systemctl disable firewalld.service Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost ~]# yum install -y iptables iptables-services.x86_64 [root@localhost ~]# systemctl start iptables.serviceiptables防火墻的配置方式
-
使用iptables命令行
-
使用system-config-firewall (圖形化界面)centos 6才可用
4.1、iptabels命令行配置方法
命令格式;
iptables [-t 表名] 管理選項(xiàng)[鏈名] [匹配條件] [-j 控制類(lèi)型]注意事項(xiàng):
-
不指定表名時(shí),默認(rèn)指filter表
-
不指定鏈名時(shí),默認(rèn)指表內(nèi)的所有鏈
-
除法設(shè)置鏈的默認(rèn)策略,否則必須指定匹配條件
-
控制類(lèi)型使用大寫(xiě)字母,其余均為小寫(xiě)
常用的控制類(lèi)型
| ACCEPT | 允許數(shù)據(jù)包通過(guò) |
| DROP | 直接丟棄數(shù)據(jù)包通過(guò),不給出任何回應(yīng)信息 |
| REJECT | 拒絕數(shù)據(jù)包通過(guò),會(huì)給數(shù)據(jù)發(fā)送端一個(gè)響應(yīng)信息 |
| SNAT | 修改數(shù)據(jù)包的源地址 |
| DNAT | 修改數(shù)據(jù)包的目的地址 |
| MASQUERADE | 偽裝成一個(gè)非固定公網(wǎng)IP地址 |
| LOG | 在/var/log/messages文件中記錄日志信息,然后 |
常用的管理選項(xiàng)
| -A | 在指定鏈的末尾追加(--append)一條新的規(guī)則 |
| -I | 在指定鏈的開(kāi)頭插入(--insert)一條新的規(guī)則,未指定序號(hào)時(shí)默認(rèn)作為第一條規(guī)則 |
| -R | 修改,替換(--replace)指定鏈中的某一條規(guī)則, |
| -P | 設(shè)置指定鏈的默認(rèn)策略(--policy), |
| -D | 刪除(--delete)指定鏈中的某一條規(guī)則,可指定規(guī)則序號(hào)或具體內(nèi)容 |
| -F | 情空(--fliush)指定鏈中的所有規(guī)則,若鏈若未指定鏈名,則清空表中所有鏈 |
| -L | 列出(--list)指定鏈中所有的規(guī)則,若未指定鏈名,則列出表中的所有鏈 |
| -n | 使用數(shù)字形式(--numeric)顯示輸出和結(jié)果,如顯示IP地址而不是主機(jī)名 |
| -v | 顯示詳細(xì)信息,包括每條規(guī)則的匹配包數(shù)量和匹配字節(jié)數(shù) |
| --line-numbers | 查看規(guī)則時(shí),顯示規(guī)則的序號(hào) |
4.2、規(guī)則的匹配
1、通用匹配
可直接使用,不依賴(lài)于其他條件或擴(kuò)展,包括網(wǎng)絡(luò)協(xié)議、IP地址、網(wǎng)絡(luò)接口等條件
-
協(xié)議匹配:-p 協(xié)議名 (tcp\udp\imcp)
-
地址匹配:-s 源地址 、 -d 目標(biāo)地址 #可以是IP、網(wǎng)段、域名、空(任何地址)
-
接口匹配:-i 入站網(wǎng)卡 -o 出站網(wǎng)卡
2、隱含匹配
要求以特定的協(xié)議匹配作為前提,包括端口、TCP標(biāo)記、ICMP類(lèi)型等條件
端口匹配:--sport源端口、--dport目的端口
##可以是個(gè)別端口、端口范圍
-
--sport 1000 匹配源端口是1000的數(shù)據(jù)包
-
--sport 1000:3000 匹配源端口是1000-3000的數(shù)據(jù)包
-
--sport :3000 匹配源端口是3000及以下的數(shù)據(jù)包
-
--sport 1000: 匹配源端口是1000及以上的數(shù)據(jù)包
注意:--sport和--dport必須配合-p<協(xié)議類(lèi)型>使用
3、顯示匹配
要求以“-m 擴(kuò)展模塊”的形式明確指出類(lèi)型,包括多端口、MAC地址、IP范圍、數(shù)據(jù)包狀態(tài)等條件
多端口匹配:-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
IP范圍匹配:-m iprange --src-range IP范圍
5、SNAT與NAT
SNAT源地址轉(zhuǎn)換
-
數(shù)據(jù)包從內(nèi)網(wǎng)發(fā)送到公網(wǎng)時(shí),SNAT會(huì)把數(shù)據(jù)包的源IP由私網(wǎng)IP轉(zhuǎn)換成公網(wǎng)IP
-
當(dāng)響應(yīng)的數(shù)據(jù)包從公網(wǎng)發(fā)送到內(nèi)外時(shí),會(huì)把數(shù)據(jù)包的目的IP由公網(wǎng)IP轉(zhuǎn)換為私網(wǎng)IP
DNAT目標(biāo)地址轉(zhuǎn)換
-
修改數(shù)據(jù)包的目的地址
1、準(zhǔn)備工作
服務(wù)端7-7 ? VMNet1 ? 內(nèi)網(wǎng) ? 192.168.80.20 ---------------------------------------------- systmectl stop firewalld systemctl disable firewalld setenfence 0 VMNet1 ? 內(nèi)網(wǎng) vim /etc/sysconfig/network-scripts/ifcfg-ens33 IPADDR=192.168.80.20 GATEWAY=192.168.80.12 #DNS systemctl restart networi --------------------------------------------- 客戶(hù)端7-8 VMNet2 外網(wǎng) ? ? 12.0.0.200 systmectl stop firewalld systemctl disable firewalld setenfence 0 VMNet2 外網(wǎng) vim /etc/sysconfig/network-scripts/ifcfg-ens33 IPADDR=12.0.0.200 GATEWAY=12.0.0.254 #DNS systemctl restart network ------------------------------------------- 網(wǎng)關(guān)服務(wù)器 7-2 ? ? ? ? ? 192.168.80.12 ? 12.0.0.254 加網(wǎng)卡 ? VMNet1 VMNet2 外網(wǎng) ? 都是僅主機(jī)模式 vim /etc/sysconfig/network-scripts/ifcfg-ens33 IPADDR=192.168.80.12 #GATEWAY #DNS vim /etc/sysconfig/network-scripts/ifcfg-ens36 #UUID IPADDR=12.0.0.254 #GATEWAY #DNS systemctl restart network2、驗(yàn)證工作
----------------------------------------------- 網(wǎng)關(guān)服務(wù)器 7-2 ? ? ? ? ? 192.168.80.12 ? 12.0.0.254 ----------------------------------------------- vim /etc/sysctl.conf ? ? 打開(kāi)IP轉(zhuǎn)換功能 net.ipv4.ip_forward=1 ? sysctl -p ? ? ---------------------------------------------- 服務(wù)端7-7 ? VMNet1 ? 內(nèi)網(wǎng) ? 192.168.80.20 ---------------------------------------------- yum install -y httpd systemctl start httpd cd /var/www/html echo 'this is second test web!' > index.html (三機(jī)去火花瀏覽器驗(yàn)證) ---------------------------------------------3、轉(zhuǎn)發(fā)功能
網(wǎng)關(guān)服務(wù)器 7-2 ? ? ? ? ? 192.168.80.12 ? 12.0.0.254 ------------------------------------------------------- iptables -nL iptables -nL -t nat iptables -F &&iptables -F -t nat ? 刪表 iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to 12.0.0.254 iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.254 -p tcp --dport 8080 -j DNAT --to 192.168.80.20:80 systemctl restart httpd總結(jié)
以上是生活随笔為你收集整理的iptables防火墙与SNAT和DNAT的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 三相桥式全控电路matlab,基于Mat
- 下一篇: kind kubernetes 集群内