Lesson33 linux中firewalld防火墙的地址伪装与地址转发
文章目录
1. 实验:拒绝ip为172.25.254.250主机访问我的desktopfirewalld火墙服务器
实验目的:拒绝ip为172.25.254.250主机访问我的desktopfirewalld火墙服务器,desktop火墙服务器的ip为172.25.254.114
说明:因为172.25.254.250是别人主机的ip,为了验证实验现象,我先完成拒绝自己的真机(ip为172.25.254.14)访问desktop防火墙服务器
实验步骤:
在desktop服务器端
:
firewall-cmd --permanent --add-service=ssh #给火墙永久添加ssh服务
firewall-cmd --reload #重新加载使其生效
firewall-cmd --list-all #查看火墙信息列表,查看ssh服务是否已经成功添加
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.250 -p tcp --dport 22 -j REJECT
#永久添加规则,指定ipv4的filter表的INPUT 1链,数据来源为172.25.254.250的,传输协议为tcp,到达22端口(ssh服务的端口)的动作为拒绝
各参数说明:
–direct 规则
–add-rule 添加规则
指定ipv4的filter表
INPUT 链
-s 数据来源
-p 访问采用的协议
–dport 目的地端口 distnation port
-j 行为动作 REJECT(拒绝有回显)| ACCPET(接受)| DROP(拒绝无回显)
拒绝172.25.254.14访问desktop的firewalld服务器
在真机进行测试
:
ssh root@172.25.254114
#查看真机是否能够使用ssh服务连接desktop虚拟机
可以看到,无法连接至172.25.254.114主机,22端口访问被拒绝
移除拒绝172.25.254.14访问的策略
可以看到,此时真机端已经可以通过ssh服务访问desktop服务器端
2. firewalld的源地址伪装(postrouting路由之后)与目的地址转换(prerouting路由之前)
在desktop服务器端必须首先开启防火墙的地址伪装功能和路由功能ip_forward=1
vim /etc/sysctl.conf #编辑/etc/sysctl.conf文件
net.ipv4.ip_forward=1 #写入内容使ip_forward=1,开启路由功能
sysctl -p #刷新使其生效
2.1 源地址伪装(SNAT postrouting路由之后,例如上网)
内部地址要访问公网上的服务时(如web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。
源地址转换SNAT即内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。
将内网地址转换成公网址(一般是网关的外部地址),所以大家经常会看到为了让内网用户上公网,我们必须在routeros的firewall中设置snat,俗称IP地址欺骗或伪装(masquerade)
在server端测试
:
在server端(ip为192.168.0.214)添加网关为192.168.0.114,若不添加,则ping不通172.25.254.14
重启网络
route -n
#查看网关是否成功添加
在desktop服务器端:
从22端口进来的数据都转到172.25.254.15这台主机上去
在server端测试
:
ssh root@172.25.254.15
#连接172.25.254.15,登陆上去之后,使用
w -i
查看登陆过15这台主机的ip
可以看到,虽然登陆172.25.254.15这台主机的ip为192.168.0.214,实际上却是172.25.254.114,说明地址伪装成功
2.2 目的地址转换(DNAT,prerouting路由之前,例如发布网站)
当内部需要提供对外服务时(如对外发布web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT,主要用于内部服务对外发布。
为了不受上一个地址伪装的实验的影响,将172.25.254.15这台主机从desktop服务器端移除
重新添加172.25.254.14(真机ip)允许访问desktop服务器端,查看列表可以看到forward-ports中成功添加了172.25.254.14, 意思是从22端口进来的数据都转到172.25.254.14这台主机上去
在真机端进行测试
:
在真机上
ssh root@172.25.254.114
这里需要注意,虽然显示的是要求输入172.25.254.114的密码,实际上需要输入真机(172.25.254.14)的密码,这里验证了连接确实会被转到172.25.254.14去
可以看到,能够成功访问desktop服务器
ifconfig br0
#查看真机ip为172.25.14.250
使用w -i可以看到,172.25.254.114登陆了真机
做完地址转换的实验,firewalld防火墙实验就暂停了,下边要学习iptables防火墙,因此关掉firewalld服务,设置为不开机自启动,以免对iptables实验造成影响