1. iptables规则备份和恢复
- 保存和备份iptables规则
- service iptables save //会把规则保存到/etc/sysconfig/iptables //默认保存的位置
- 把 iptables规则备份到my.ipt文件中
- iptables-save > my.ipt
- 恢复刚才备份的规则
- iptables -restore < my.ipt #
备份
# service iptables save
/etc/sysconfig/iptables //默认保存的位置
指定备份位置
[root@localhost ~]# iptables-save > /tmp/ipt.txt
[root@localhost ~]# cat /tmp/ipt.txt
# Generated by iptables-save v1.4.21 on Fri Dec 1 21:16:41 2017
*filter
:INPUT DROP [9:702]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [262:26184]
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.8.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
COMMIT
# Completed on Fri Dec 1 21:16:41 2017
恢复备份的规则
[root@localhost ~]# iptables-restore < /tmp/ipt.txt
[root@localhost ~]# iptables-save > /tmp/ipt.txt #保存修改的规则
[root@localhost ~]# iptables -t nat -F #清空掉
[root@localhost ~]# iptables -t nat -nvL #查看规则
实例:
保存和备份iptables规则
service iptables save ##会把规则保存到/etc/sysconfig/iptables里
下图是清空后的filter规则并保存的。
示例保存规则操作:
步骤1:先写一条规则进filter表
步骤2:保存规则并把规则备份到一个文件中、或者iptables-save >保存的路径
查看配置文件是否已经保存
查看保存规则文件是否已备份
步骤4:清空规则利用备份文件进行恢复
iptables-restore < 规则备份路径
重定向到一个文件中。
3. firewalled的9个zone
打开firewalld
systemctl disable iptables #开机关闭netfilter
systemctl stop iptables #停止netfilter服务
systemctl enable firewalld #开机启动firewalld
systemctl start firewalld #打开防护墙,以上是打开 firewalld的步骤
firewalld默认有9个zone
默认zone为public
firewall-cmd --get-zones //查看所有zone
firewall-cmd --get-default-zones //查看默认zone
service具体可以对哪些服务使用,你可以chkconfig --list 看看。
查看所有zone命令 firewall-cmd --get-zones
查看默认zones命令
firewall-cmd --get-default-zone(下图显示默认是public)
4. firewalld关于zone的操作
关于firewalld有两个基础的概念,分别是zone和service,每一个zone里面有不同的iptables规则,默认一共有9个zone。
设定系统默认的zone方法
firewall-cmd --set-default-zone=work //设定默认zone
查看指定网卡的zone
firewall-cmd --get-zone-of-interface=ens33
给指定网卡设置zone
firewall-cmd --zone=home --add-interface=ens33
针对网卡更改zone
firewall-cmd --get-zone-of-interface=ens33
针对网卡删除zone
firewall-cmd --zone=public --remove-interface=ens33
图下删除后的zone为模块本来默认work
查看系统所以网卡所在zone
firewall-cmd --get-active-zones
常见问题:1.改不了
答:把NetworkManager先关闭。systemctl stop NetworkManager
2.我整37没有zone 是不是导致之前nat地址转换时B机器不能访问外网的原因,之前只能ping同192.168.122.130,192.168.122.1是ping不通的
答:做nat实验的时候 用的并不是firewalld服务。 所以跟这个没有关系。
3.不自动补全原因?
答:yum install -y bash-completion
4.并没有提示“The interface is under control of NetworkManager,settint zone to 'block'”,并且remove ens37的zone也没有类似提示,而且查看结果不是恢复为默认的zone(默认为work),而是“no zone”,见下图
答:不提示,说明你并没有开启NetworkManager服务。
5.
ens37不能单独ifup/ifdown的?要service network restart 才能挂载网卡
答:可能是你配置文件内容不合适。
5. firewalld关于service的操作
http:80端口 https443:端口
- firewall-cmd --zone=public --add-service=http --add-service=https --add-service=ftp
- firewall 有netfilter中的端口映射和转发
irewalld还是iptables-service,其实底层用到的都是netfilter,都有INPUT OUTPUT FORWORD等链,有filter、nat等表。
关于之所以有9种zone,是因为每一个zone里面都使用了不同的service,而service就是针对一个服务(端口)做的iptables规则。zone就是一个规则集合
- firewall-cmd --zone=block --list-service
- block里面没有任何的services
实例:
列出系统里面所以service
firewall-cmd --get-services
查看系统默认的zone下面有哪些service
firewall-cmd --list-services
查看指定zone有哪里service
firewall-cmd --zone=public --list-services
指定zone来添加服务
firewall-cmd --zone=public --add-service=ftp
添加后的服务保存到配置文件(之后会在/etc/firewalld/zones目录生成一个配置文件)
firewall-cmd --zone=public --add-service=ftp --permanent (--permanent会写入配置文件永久生效)
这里需要说明一下/etc/firewalld/zones目录下的配置文件。
图下有2个配置文件,带有old的文件类似模板,当你第一次使用--permanent的时候他会重新写一份配置文件,之后添加服务都会添加到xml这个配置文件里。
zones模板路径:/usr/lib/firewalld/zones (9种zones的模板)
service模板路径:/usr/lib/firewalld/service
查看系统默认的zone下面有哪些service
firewall-cmd --list-services
查看指定zone有哪里service
firewall-cmd --zone=public --list-services
指定zone来添加服务
firewall-cmd --zone=public --add-service=ftp
添加后的服务保存到配置文件(之后会在/etc/firewalld/zones目录生成一个配置文件)
firewall-cmd --zone=public --add-service=ftp --permanent (--permanent会写入配置文件永久生效)
这里需要说明一下/etc/firewalld/zones目录下的配置文件。
图下有2个配置文件,带有old的文件类似模板,当你第一次使用--permanent的时候他会重新写一份配置文件,之后添加服务都会添加到xml这个配置文件里。
zones模板路径:/usr/lib/firewalld/zones (9种zones的模板)
service模板路径:/usr/lib/firewalld/service
列出来系统里所有的service,加不加s都行
查看当前的zone,default-zone
查看当前的firewall有那些service
查看public有哪些servisce服务,直接在zone后面,添加要查看的内容
查看哪些信任的service服务,显示没有
把http增加到,public zone下面
增加一个ftp服务。在后面添加--permanent
查看配置文件,里面的ftp,添加成功了
(第二是)查看zone配置文件模板,后缀old是之前保存的
查看services服务的模板文件。
需求:ftp服务自定义端口1121,需要在work zone下面放行ftp
第一步更改ftp服务,把ftp的services加到work zone
第二步
重新加载
查看指定的work的services,添加成功了
练习:
需求:ftp服务自定义端口改为1121,在work,zone下面放行ftp
步骤1,:首先先把ftp模板拷贝到firewalld服务里
cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/
步骤2:编辑firewalld里的ftp端口
vim /etc/firewalld/services/ftp.xml
步骤3:把work模板拷贝到etc下的firewall的zone里
cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
步骤4:增加work里的服务
vim /etc/firewalld/zones/work.xml
步骤5:重新加载firewall
测试:查询是否添加成功
如何查看被占用的端口:windows版
netstat -ano,列出所有端口的情况
查看被占用端口对应的PID,输入命令:netstat -aon|findstr "49157",回车,记下最后一位数字,即PID,这里是2720。
继续输入tasklist|findstr "2720",回车,查看是哪个进程或者程序占用了2720端口,结果是:svchost.exe
或者是我们打开任务管理器,切换到进程选项卡,在PID一列查看2720对应的进程是谁,如果看不到PID这一列,如下图:
则我们点击查看--->选择列,将PID(进程标示符)前面的勾打上,点击确定。
看到PID这一列标识,看一下2720对应的进程是谁,如果没有,我们把下面的显示所有用户的进程前面的勾打上,就可以看到了,映像名称是svchost.exe,描述是,Windows的主进程,与上面命令查看的完全一致。
结束该进程:在任务管理器中选中该进程点击”结束进程“按钮,或者是在cmd的命令窗口中输入:taskkill /f /t /im Tencentdl.exe。
linux版
输入端口查询命令netstat -an|grep *(*表示端口号),如果没有任何显示表明端口没有被占用
如果显示tcp 0 0:::* :::* LISTEN表示端口被占用