kvm存储池
防火墙:流量控制
iptables的四表五链分别为:
四表:raw(跟踪)、mangle(打标记/方便集群批量)、nat(网络地址转换/翻译表)、filter(过滤)
五链:INPUT(终点)、OUTPUT(起点)、FORWARD(穿越)、PREROUTING(dnat)、POSTROUTING(SNAT)
防火墙是否生效看表和链,而不只看链。
源地址解析是内网访问外网;目标地址解析是外网访问内网。
-A 和 -I 的区别:
-A是追加,-I是插入到第一行
过滤:进出转发
没有匹配到就走默认的,默认看policy后面是ACCEPT或DROP
何如知道行号显示:
iptables-nvxL --line-numbers(--line也行)
iptables-nxL --line-numbers带行号显示
插入成为第二条:.... -I INPUT 2 -s ....
不接行号就是默认插入到头条
删除防火墙:
iptables -tfilter -D INPUT 2删除行号为2的
iptables -tfilter -F INPUT 删除INPUT链中的所有规则
iptables--help | grep -i “\-D” 查看帮助
改防火墙:replace替换嘛
iptables -RINPUT 2 -s 192.168.1.30 -j ACCEPT
通过配置文件可以永久保存并且进行增删改查操作
临时的,重启全没了,怎么永久生效
iptables-save回车可以把当前的规则打印出来
systemctlsave iptables
rpm -qa |grep iptables
iptables-services必须要有这个才会有配置文件
rpm -qliptables
vim /etc/sysconfig/iptables防火墙的配置文件
没有这个配置文件是因为你没有安装iptables-services
iptables-save> /etc/sysconfig/iptables要有把握,不过最好直接用上面的vim去改,以免失误导致输出重定向覆盖了之前的规则
systemctlrestart iptables重启防火墙服务
-P默认策略:(VIP会员)
iptables -PINPUT DROP 就是INPUT链里面的policy变成了DROP
一般都是默认拒绝(只能写DROP或者ACCEPT)
192.168.1.63/24就是192.168.1.0
192.168.1.63/32就是192.168.1.63
127.0.0.1也是自己呀
让宋子奇不可以访问baidu
vim/etc/hosts
192.168.1.181www.baidu.com保存退出
iptables -tfilter -A FORWORD -s 192.168.1.10 -d www.baidu.com -j REJECT
从哪个网卡进来的-i(入口网卡名称,就不需要带ip地址了,直接写网卡名就行了) 外网进入到路由器转发给内网
sport把我当作源
dport把我当作目标
从哪个网卡出去的-o(出口网卡名称)
iptables -tnat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port3128设置防火墙策略地址转换,iptables -S查看设置成功了没;为什么要转到透明代理的,做上网的行为管理、拦截
443https
80web
打标记叫webs
可以批量处理
start:
需求:
小明的客户机能访问小强的网关,小强的服务器能访问小明的服务器:(全用仅主机模式)
解:需要3台:
内网上外网,防火墙的决策,外网上内网web网站
小明的客户机为仅主机模式192.168.1.10,那么小明的路由器一个为仅主机模式192.168.1.254,另一个为桥接模式1.1.1.1/30
宿主机:
cphost-only.xml host.xml
vim host.xml
改name、uuid、mac地址。 网桥的ip是172.16.1.0 255.255.255.0 范围range是172.16.1.1 172.16.1.254
virshnet-define host.xml
virshnet-start host
virshnet-autostart host
切换网卡点应用才会变成活跃的
用VMWare:
虚拟网络编辑器的仅主机模式的ip为172.16.1.0
clone1:网卡host-only
ip设置为172.16.1.100掩码24,网关172.16.1.254
不需要开防火墙
虚拟网络编辑器:添加网络vmnet2,并修改为1.1.1.0
clone2: 网卡host-only (host-only多个的话要使用custom选那个指定的vmnet几,不然就废了) 、网卡Custom:特别的虚拟网络,vmnet2刚才添加的应用保存
改ens33 ip为172.16.1.254掩码24
改ens35 ip为1.1.1.1掩码24位
公网不需搞网关
重启网卡
clone3:网卡Custom:特别的虚拟网络,vmnet2刚才添加的应用保存
改ens33 ip为1.1.1.2掩码24位
公网不需搞网关
重启网卡
clone1:
ping 1.1.1.2不通(要去防火墙那边开启路由转发)
clone2:
ping 1.1.1.2通了(防火墙肯定夹在中间做路由转发呀)
sysctl -p
sysctl -a |grep ip_for
echo “net.ipv4.ip_forward=1”>> /etc/sysctl.conf
sysctl -p 立即生效
clone1:
ping 1.1.1.2还是不通
clone3:
yum install-y httpd
echowww.badu.com > /var/www/html/index.html
systemctlstart httpd
clone2:
curl 1.1.1.2可以
clone1:
curl 1.1.1.2不可以
clone2:
iptables -F
iptables -X
iptables -Z
iptables -tnat -A POSTROUTING源地址翻译 -s172.16.1.0/24 -p tcp --dport 80 -j SNAT --to源地址要替换为 1.1.1.1
clone1:
curl 1.1.1.2还是不行
ping192.168.1.254都不通,出bug 了
clone2:
iptables -nL-t nat
ping 1.1.1.2通的
ping172.16.1.254不通,出bug 了
重启虚拟机,可以解决bug
yum -yinstall iptables-services
systemctlrestart iptables
六道仙李做全是仅主机模式的实验:
虚拟网络编辑器:仅主机模式有两个:192.168.220.0和 192.168.221.0
内网:192.168.220.111
防火墙:192.168.220.50 和 192.168.221.50
外网:192.168.221.111
ip不要设置为1,2了因为有bug
郭老师的添加路由的方法对仅主机模式也有效果,相互添加了路由添加全了两者才能互相ping通
黄老师没有在clone3里面添加路由,只在clone1里面添加了路由,所以就出现了问题
黄老师继续:
ping的通但访问不了网站是因为selinux、firewalld没有关
防火墙的坏了
rpm -eiptables --nodeps卸载iptables
坏的解释器,python没有了
scp/usr/lib64/ld-linux-x86-64.so.2 废了,重装系统
黄老师居然也成功了,总结:
与郭老师的区别:黄老师就是不在第三台机子上操作,先在第一台机子上和郭老师一样的操作添加路由,然后把郭老师在第三台机子上操作的改为了在第二台机子上操作,第二台机子做一个防火墙策略,POSTROUTING源地址翻译!即可:
在防火墙的机子上添加:
iptables -tnat -A POSTROUTING -s 172.16.1.0/24 -p tcp --dport 80 -j SNAT --to 1.1.1.1是不是如果访问80端口就做动作: SNAT将源地址转换为与第三台ping的通的中间那台的那张网卡,这个过程叫做源地址翻译,只不过这个源地址要写为网段/24的形式
上面这个就相当于在第三台机子里面添加了路由,但实际上有没有添加呢,有待验证:没有添加,实际上就是如果第一台访问80端口就做动作: SNAT将源地址转换为与第三台ping的通的中间那台的那张网卡,这个过程叫做源地址翻译,只不过这个源地址要写为网段/24的形式
注意SNAT或DNAT后面都有一个--to翻译成什么ip
next start:
现在来研究PREROUTING:
把上面的实验反过来,我做网站,让别人外网来访问我的网站:
先在第一台上安装httpd网站服务,并写一个index.html
第一台机子添加路由
第二台机子开启路由转发
要让第三台机子去访问第二台机子的能ping的通的那张网卡能访问的到第一台的网站
第二台:
先试试这个策略:
iptables -tnat -A PREROUTING -s 1.1.1.0/24 -p tcp --dport 80 -j DNAT --to 172.16.1.254这个-s和-d不是随便写的,一般都是-s
iptables -tnat -A PREROUTING -i ens37 -p tcp --dport 80 -j DNAT --to 172.16.1.100这里为什么不是254?答:那就要看你的需求是什么呀,如果你想让第三台去curl第二台能ping的通的那个网卡就能访问到第一台的网站,那么你就写100,如果你的[需求]是第三台直接去curl第一台能访问到他的网站那么你就写254呀,主要是看地址被翻译成了什么,如果翻译成第二台的另一张网卡,你就能直接curl第一台机子访问第一台机子的网站了,如果翻译成第一台的网卡,你就能curl第二台能ping的通的ip来访问第一台的网站!
为什么写-i啊?-i是网卡名,写ip的话用:-s 1.1.1.10/24试一下能不能成功?能成功。
第三台:
curl1.1.1.10访问第二台你就能访问得到第一台写的网站了
然后思考上一个实验,你去访问别人外网的网站,怎么通过访问第二台机子能ping的通的ip就能访问得到第三台写的网站?不存在
POSTROUTING和PREROUTING总结:我去访问外网的网站用POSTROUTING源地址翻译内网访问外网;外网来访问我的网站用PREROUTING目标地址翻译外网访问内网
如果你采用的是POSTROUTING,那么必须要翻译成第二台另外一张网卡的ip(巧记:post另一张网卡:司令);
如果你采用的是PREROUTING,那么必须要翻译成有网站的那台网卡的ip(巧记:pre之前有网站)
过滤表,进出转发链,默认改为drop,看原来的还通不通
第一、二个实验:
iptables -PINPUT DROP能
iptables -POUTPUT DROP能
iptables -PFORWARD DROP不能了
说明过路人默认为DROP的话就会被丢弃了
练习题:
1.拒绝192.168.122.8访问我的网站(因为不知道是apache还是nginx还是代理,不管是什么,总之80端口不会变,所以从端口思考,拒绝那个人访问我的80端口):
iptables -tfilter -A INPUT -s 192.168.122.8(因为是INPUT所以是别人来访问我,别人就是源地址-s后面写别人的ip) --prot 80 -j DROP错啦
DROP 丢弃(不会回复对方,直接丢弃)
REJECT 拒绝(还会回复对方已拒绝)
iptables -tfilter -A INPUT -s 192.168.122.8 -p tcp --dport 80 -j REJECT需要加-p tcp 端口都是在tcp协议里面的,端口是--dport
2.允许所有人访问我的ssh除了192.168.122.8(做了第一题之后其他的就都很简单了,SSH是22号端口)
iptables -tfilter -A INPUT -s 192.168.122.8 -p tcp --dport 22 -j REJECT
3.不允许我自己访问192.168.122.8的ssh(我变成了输出,就是OUTPUT)
iptables -tfilter -A OUTPUT -s 192.168.122.8 -P tcp --dport 22 -j REJECT错啦
-d是什么啊?哈哈哈,注意变成了OUTPUT之后别忘了-s源地址也要变成-d目标地址呀,协议-p是小写的条件辅助词
iptables -tfilter -A OUTPUT -d 192.168.122.8 -p tcp --dport 22 -j REJECT
发现一个iptables的规律哈:不加任何条件直接写动作-j 动作的话就会别人ping不通你,并且你也ping不同别人,这个-d和-s不能瞎写
防火墙还是叼啊,访问控制的真汉子
4.只允许192.168.122.8访问我的ssh,其他人全部拒绝
iptables -tfilter -A INPUT ! -s 192.168.122.8 -p tcp --dport 22 -j REJECT
主要下面这个iptables是什么意思?
iptables -tnat -A POSTROUTING源地址翻译 -s172.16.1.0/24 -p tcp --dport 80 -j SNAT --to源地址要替换为 1.1.1.1
意思就是内网访问外网,起点是172.16.1.0这个网段当访问80端口就会将起点ip翻译成1.1.1.1
还有之前squid的透明代理iptables是什么意思
iptables -t nat-A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128设置防火墙策略地址转换,iptables -S查看设置成功了没;为什么要转到透明代理的,做上网的行为管理、拦截
意思就是外网访问内网,起点是1.0的网段当访问80端口就会重定向3128端口
-d是什么啊?哈哈哈,注意变成了OUTPUT之后别忘了-s源地址也要变成-d目标地址呀
规律:
POSTROUTING和PREROUTING后面接-s网段/24