赞
踩
目录
centos1:(中间那台,ens33=vmnet1;ens37=vmnet2)
3.2 当win7访问Cent1提供的网页服务时,在Iptables打开之后发现也被拒绝了
iptables和netfilter的关系是一个很容易让人搞不清的问题。很多的知道iptables却不知道netfilter。其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。
iptables不止有防火墙功能,还有NAT、SNAT等功能
4个功能(表):raw、mangle、nat、filter
俩网卡都是仅主机模式
要配置静态ip,先要在
【虚拟网络编辑器】里取消DHCP
顺便设置一下子网网段范围
之后就开始PC的配置。
不确定对应关系的可以禁用一下试试,就知道对应关系了
ens33:
ens37:
这个图形界面的设置在 【设置】-【网络】里面,设置好了之后关闭再打开生效。找不到图形界面直接编辑配置文件也是一样的效果。
- [root@localhost ryan]# cd /etc/sysconfig/network-scripts
- [root@localhost network-scripts]# ls
- ifcfg-ens33 ifdown-ib ifdown-routes ifup-aliases ifup-isdn ifup-sit network-functions
- ifcfg-lo ifdown-ippp ifdown-sit ifup-bnep ifup-plip ifup-Team network-functions-ipv6
- ifcfg-有线连接_1 ifdown-ipv6 ifdown-Team ifup-eth ifup-plusb ifup-TeamPort
- ifdown ifdown-isdn ifdown-TeamPort ifup-ib ifup-post ifup-tunnel
- ifdown-bnep ifdown-post ifdown-tunnel ifup-ippp ifup-ppp ifup-wireless
- ifdown-eth ifdown-ppp ifup ifup-ipv6 ifup-routes init.ipv6-global
编辑那个ifcfg-ens33即可,编辑网卡ens37再复制一份文件编辑即可。我的ifcfg-ens33文件内容如下
- TYPE=Ethernet
- PROXY_METHOD=none
- BROWSER_ONLY=no
- BOOTPROTO=none
- DEFROUTE=yes
- IPV4_FAILURE_FATAL=no
- IPV6INIT=yes
- IPV6_AUTOCONF=yes
- IPV6_DEFROUTE=yes
- IPV6_FAILURE_FATAL=no
- IPV6_ADDR_GEN_MODE=stable-privacy
- NAME=ens33
- UUID=d32dd883-7c91-41d6-b5ef-aaed07c33ef6
- DEVICE=ens33
- ONBOOT=no
- IPV6_PRIVACY=no
- IPADDR=192.168.1.254
- PREFIX=24
- GATEWAY=192.168.1.254
现在win7还 ping 不通 centos2,不过并不是因为没有配置路由转发表,因为只有一个路由器(centos1)并不需要配置路由表,只需要开启centos的【路由转发】即可
echo "1" > /proc/sys/net/ipv4/ip_forward
现在win7就可以ping 通centos2了
现在实验环境搭建完成,可以进行iptables实验了
对中间那台主机做如下操作(安装iptables相关组件,禁用系统自带防火墙,启动iptables):
- yum install -y iptables*
- yum update iptables
- yum install iptables-services
- systemctl stop firewalld
- systemctl disable firewalld.service
- systemctl mask firewalld
- service iptables start
出现这个状态(Active)即启动iptables成功
- [root@localhost ryan]# service iptables status
- Redirecting to /bin/systemctl status iptables.service
- ● iptables.service - IPv4 firewall with iptables
- Loaded: loaded (/usr/lib/systemd/system/iptables.service; disabled; vendor preset: disabled)
- Active: active (exited) since 四 2020-09-03 11:51:36 CST; 2min 58s ago
- Main PID: 44909 (code=exited, status=0/SUCCESS)
-
- 9月 03 11:51:36 localhost.localdomain systemd[1]: Starting IPv4 firewall wit...
- 9月 03 11:51:36 localhost.localdomain iptables.init[44909]: iptables: Applyi… ]
- 9月 03 11:51:36 localhost.localdomain systemd[1]: Started IPv4 firewall with...
- Hint: Some lines were ellipsized, use -l to show in full.
查看当前iptables filter表状态
- [root@localhost ryan]# iptables -t filter -nvL
- Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
- 119 11248 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
- 1 60 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
- 96 6580 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
- 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
- 108 13542 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
-
- Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
- 12 784 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
-
- Chain OUTPUT (policy ACCEPT 293 packets, 28400 bytes)
- pkts bytes target prot opt in out source destination
每个表都有专门写规则的地方(链chain)
filter里面有三个chain
INPUT:
FORWARD:转发规则链(当源地址以及目标地址都不是本机,经过了我,意思就是让我转发),可以看到转发规则链,all reject,所以win7 ping 不通 cent2 。因为cent1拒绝转发。
OUTPUT:
现在让iptables的规则显示一秒变化一次
watch -n1 iptables -t filter -nvL
让win7 ping -t 192.168.2.7,会发现cent1的forword这里在不停的增长
而拒绝了之后得给win7一个回复呀,就发现负责恢复的OUTPUT链也在不停的处理数据
搭建网页教程见 : https://blog.csdn.net/Drifter_Galaxy/article/details/108355841
这个原因出在INPUT链上;当访问cent1的网页时,源192.168.1.7 目标 192.168.1.254 协议TCP 端口80
第一条规则,all允许,想得美,有附加条件的 state RELATED,ESTABLISHED,即已经建立的连接才被允许。
第二条规则,
icmp协议的,不看
第三条规则,
协议all,源地址目标地址都没限制,然而进口必须是lo——local,这条是说本地环回地址无限制
第四条规则,
这个总是tcp协议了吧,对源地址目标地址也没限制,为啥没连上呢?? 仔细看后面那句话,dpt = destination port,即目标端口需要是22才行。
第五条规则,
最后的规则了如果这条还不满足,那就由默认规则进行匹配,哦对了,默认规则是ACCEPT
然而咱们失败了,所以肯定是第五条规则干掉的,第5条说不管啥协议,来源啥,目标啥,都拒绝。
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
现在可以啦,因为这条规则允许了任何源以tcp协议访问80端口。-I是插入的意思,会在最上面
语法构成:
iptables 【-t 表名】 选项 【链名】 【条件】 【-j 控制类型】
eg:iptables -t filter -I INPUT -p icmp -j REJECT
这条规则是阻止ping测试的
eg:iptables -I INPUT 2 -p icmp -j REJECT
通用匹配 | -可以直接使用,不依赖其他条件或者扩展 -包括网络协议、IP地址、网络接口等条件 |
隐含匹配 | -要求以特定的协议匹配作为前提 -包括端口、TCP标记、ICMP类型等条件 |
显式匹配 | -要求以“-m扩展模块”的形式明确指出类型 -包括多端口、MAC地址、IP范围、数据包状态等条件 |
协议匹配 | -p 协议名 |
地址匹配 | -s 源地址、-d目的地址 |
接口匹配 | -i入站网卡、-o出站网卡 |
端口匹配 | --sport源端口、--dport目标端口 |
TCP标记匹配 | --tcp-flag检查范围 被设置的标记 |
ICMP类型匹配 | --icmp-type ICMP类型 |
隐含匹配就可以实现,我ping别人ping的通,别人ping我不通
多端口匹配 | -m multiport --sport 源端口列表 -m multiport --dport 目标端口列表 |
IP范围匹配 | -m iprange --src-range IP范围 |
MAC地址匹配 | -m mac --mac-source MAC地址 |
看目前默认的FORWARD是REJECT,所以ping的时候,需要cent1进行转发时,就会提示目标主机不可达
现在再来一条FORWRAD规则
iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j DROP
现在的提示信息变成了,请求超时,因为icmp包直接被丢了。
现在干正事!
iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
行了
iptables -D FORWARD 2
再次查看FORWARD链规则 : iptables -t filter -nvL
iptables -F FORWARD
没有规则啦,这时候生效的就是默认规则,即ACCEPT。所以现在也是可以ping的通的
iptables -F
- [root@localhost ryan]# iptables -t filter -nvL
- Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
-
- Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
-
- Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
默认都是ACCEPT,现在win7可以访问cent2的网页了
当然cent2本身防火墙必须是关的才行(通过以下命令临时关闭)
- [root@localhost html]# setenforce 0
- [root@localhost html]# systemctl stop firewalld
担心这些规则都删了是不是不太好啊。。。其实只需要重启一下都出来了
- [root@localhost ryan]# service iptables restart
- Redirecting to /bin/systemctl restart iptables.service
- [root@localhost ryan]# iptables -t filter -nvL
- Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
- 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
- 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
- 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
- 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
- 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
-
- Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
- 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
-
- Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
设置FORWARD默认策略为DROP成功
- [root@localhost ryan]# iptables -P FORWARD DROP
- [root@localhost ryan]# iptables -t filter -nvL
- Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
- 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
- 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
- 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
- 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
- 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
-
- Chain FORWARD (policy DROP 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
- 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
-
- Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
- pkts bytes target prot opt in out source destination
- [root@localhost ryan]# iptables -P FORWARD REJECT
- iptables: Bad policy name. Run `dmesg' for more information.
注意:默认策略只能为ACCEPT和DROP,不能为REJECT
导出(备份)规则
每次重启,之前写的规则失效了多气啊!
用iptables-save工具,可结合重定向输出保存到指定文件!
iptables-save > /opt/iprules_all.txt
- [root@localhost ryan]# iptables-save > /tmp/ipt.txt
- [root@localhost ryan]# cat /tmp/ipt.txt
- # Generated by iptables-save v1.4.21 on Thu Sep 3 15:05:56 2020
- *filter
- :INPUT ACCEPT [0:0]
- :FORWARD DROP [0:0]
- :OUTPUT ACCEPT [54:5092]
- -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
- -A INPUT -p icmp -j ACCEPT
- -A INPUT -i lo -j ACCEPT
- -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
- -A INPUT -j REJECT --reject-with icmp-host-prohibited
- -A FORWARD -j REJECT --reject-with icmp-host-prohibited
- COMMIT
- # Completed on Thu Sep 3 15:05:56 2020
那怎么从文件导入呢?
iptables-restore < /tmp/ipt.txt
备份还原很麻烦哎!怎么保存为默认规则呢,
service iptables save
怎么重启都没事了、
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。