1.1防火墙的分类:
(一)硬件防火墙:思科的ASA、h3c的sepath等
(二)软件防火墙:iptables等
1.2防火墙的规则:
网关其实就是一个防火墙,网关只是帮忙做了转发。防火墙有四表五链。
五连: 进路由前prerouting
出路由后postrouting
INPUT
OUTPUT
FORWARD
1.3什么是链?
就是一堆规则的组名。(注释:如上图--路由选择前到iptables之间的过程就是一个链。规则就是如何处理数据包,如上图方块就是规则)
清空防火墙规则--------iptables -F
查看防火墙规则--------iptables -L(如果不-t指定,默认查看的是filter表) (想查看更详细的规则 iptables -L -nv)
三个链在filter表里、filter表里只有input、output、forward。
nat表里有:进前链prerouting 出后链postrouting FORWARD
------------------------------注释:附图-----------------------------
-----------------注:ACCEPT允许;policy规则;source源;destination目标------------
xshell走的是input、output链;与FORWARD链没有关系。
禁用FORWARD链:iptables -P FORWARD DROP
开启FORWARD链:iptables -P FORWARD ACCEPT
1.5修改链规则
关闭链的写法:iptables -I INPUT -p icmp -j DROP;修改forward对ping没有影响。
(备注:-I是添加到第一行、-A是追加到末尾;-p是参数,要限制的协议;icmp是ping的协议)
----这个时候INPUT处于DROP状态,如果service iptables stop三个链就都还原了。
----链下面有规则,iptables -F 清空所有的规则,但不清空链。
----例:想删除链下的某条规则:iptables -D INPUT 3
----给链加规则:iptables -P INPUT ACCEPT
*******************************************************************************************************
练习:在input里设规则,三个链都DROP,还不掉线??
-s是源
-d是目标
-i是数据包进来的网卡
-o是数据包出去的网卡
进网卡和出网卡如果不一样的话就是转发链
例:①iptables -I INPUT -s 192.168.40.1 -d 192.168.40.129 -p tcp --dport 22 -j ACCEPT
(--代表此协议建立在上一个协议之上;dport是目标端口、sport源端口;-j后面是链规则)
②iptables -I OUTPUT -s 192.168.40.129 -d 192.168.40.1 -p tcp --sport 22 -j ACCEPT
③iptables -P INPUT DROP xshell没有掉就成功了。
④iptables -P FORWARD DROP
⑤iptables -P OUTPUT DROP
**************************************************************************************************
练习:三台主机,1和3处在不同的网段,怎样设置实现主机1和主机3互通?
思路:主机2当做网关,设置两个网卡。一个ip连接主机1的网关、一个ip连接主机3的网关。
!!!!!本次操作三台机器的防火墙都要关掉,负责不成功。
步骤:
①网关(主机2)需要两块网卡;所以得添加一块网卡,另一块网卡用vmnet1模式,并查看net1的网关(编辑--虚拟网络)。开机后dhcp自动获取下再修改(ifconfig)。---------以下主机2称作网关,不再解释。
设置网关机的网卡配置:(两个网卡都不需要设置网关)
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth1 --->复制一份eth1的配置文件
vim ifcfg-eth1 (修改eth1的配置文件):修改网卡名为eth1、BOOTPROTO=none、手动配置ip及子网掩码,不配网关,其他不变。--------注:ip要和主机1或3在同一网段。
同理修改eth0的网卡配置,不需要改名-----------注:ip要和主机1或主机3中剩下的一个处在同一网段。
vim /etc/sysctl.conf 将ip_forward的值改为1,允许转发。
/etc/init.d/network restart 重启网卡配置文件
然后hostname -I就可以查看到两个ip地址了(例:vmnet8为192.168.10.11、vmnet1为192.168.14.14)。
②修改主机1的网卡配置文件(vmnet8模式):ip可自动获取也可手动配置,为了省事可以自动获取。GATEWAY=(主机2)和自己同一网段的ip(192.168.10.11)。
/etc/init.d/network restart 重启网卡配置文件,就可以ping通主机3了。
③同理,修改主机3的网卡配置文件(vmnet1模式)。然后重启网卡配置文件就能ping通主机1了。