iptables&NAT/DNAT小实验

原创 mamublog  2020-04-08 18:43:56  阅读 1852 次 评论 0 条
摘要:

啥是iptables?

iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理, 用户通过iptables这个代理, 将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字叫netfilter,netfilter才 是防火墙真正的安全框架(framework) ,netfilter位于内核空间。

iptables其实是一个命令行工具, 位于用户空间,我们用这个工具操作真正的框架。

nefilter/iptables (下文中简称为iptables) 组成Linux平台 下的包过滤防火墙,与大多数的Linux软件- 样, 这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT) 等功能。

Netfilter是Linux操作系统核心层内部的一一个数据包处理模块,它具有如下功能:

。网络地址转换(Network Address Translate)

。数据包内容修改

。以及数据包过滤的防火墙功能

所以说,虽然我们使用service iptables start启动iptables”服务",但是其实准确的来说,iptables并没有一 个守护进程,所以并不能算是真正意义上的服务,而应该算是内核提供的功能。

以上引用:朱双印个人日志

首先保证yum挂载及配置正常:创建本地yum仓库

安装iptables服务

image.png

image.png

iptables服务的启动、停止、重启和随系统启动

为了让iptables单独生效,建议先关闭firewalld。

systemctl stop firewalld

开启iptables

systemctl start iptables

加入开机启动项

systemctl enable iptables

image.png



通过命令iptables  -L可以看出,默认情况下,针对INPUT规则链,所有流量是放通(ACCEPT)的。

image.png

如果通过iptables -L看到的非清空状态,那么可以使用iptables -F INPUT进行清空。

image.png

因此可以ping通这台虚拟机,并且可以使用xshell访问,同时也能访问apache的测试页面。

image.png

image.png

image.png

命令 (注意大小写)

iptables -P INPUT DROP

image.png

此时通过iptables -L可以看出针对INPUT这个规则链的策略就已经是DROP

image.png

外部设备就无法ping通该虚拟机,并且访问该vm的所有业务全挂!!!

image.png

apache网页无法访问

image.png

ssh也不行

image.png


现在需要放通外部访问本虚拟机的一些功能,包括ping、SSH和Apache服务,其他禁止

命令

iptables -I INPUT -p icmp -j ACCEPT

image.png

image.png

iptables  -L查看到一下内容

image.png

可以ping通

image.png

ssh及apache网页依旧不能访问

image.png

image.png

现在允许外部访问本机的ssh业务

命令

iptables -A  INPUT -p tcp --dport  22  -j  ACCEPT

iptables  -L查看

image.png

发现可以ssh了

image.png


image.png

image.png

允许访问80端口

iptables -I INPUT -p tcp --dport 80  -j  ACCEPT

iptables -L查看

image.png

可以进入apache网页了

image.png


1、如何标出顺序?

iptables -L  --line

image.png

2、如何在中间插入某条规则?

假设53端口

iptables -I INPUT  2  -p tcp --dport 53  -j  ACCEPT

image.png

3、过滤其实关联的是filter这个表,因此之前的命令可以等同于

iptables  -t  filter  -I INPUT  2 -p  tcp --dport 53  -j  ACCEPT

image.png

注意:

防火墙策略规则是按照从上到下的顺序匹配的,因此一定要把允许动作放到拒绝动作前面,否则所有的流量就将被拒绝掉,从而导致任何主机都无法访问我们的服务。

使用iptables命令配置的防火墙规则默认会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,还要执行保存命令

services  iptables save

image.png


删除命令

iptables -D  -t  表  规则链(大写)  编号/原来的语句

 iptables -D -t filter  INPUT 2 

 iptables -D -t filter  INPUT  -p  tcp --dport 53  -j  ACCEPT



NAT部分

只是做过滤似乎还不够带劲,iptables还有一个很强大的功能,NAT

1、像路由器一样,iptables可以针对IP地址的源IP和目的IP均进行转换。

SNAT(Source NAT),修改源IP地址,针对POSTROUTING这个规则链生效;

DNAT(Destination NAT),修改目的IP地址,针对PREROUTING这个规则链生效。

2、关联的是nat这个表(调用NAT功能)

windows 7(仅主机模式) ---------   

image.png

   ( 192.168.192.134)         

image.png

------(仅主机模式)RHEL/CentOS 7(桥接两张网卡  192.168.192.134)  仅主机及桥接都自动获取即可

image.png

image.png

------桥接(192.168.123.72)

image.png

为什么现在无法访问互联网?

百度的IP地址是1.1.1.1

需要通过Windows 7访问百度,那么需要构造数据包,源IP地址是172.16.1.100,目的是1.1.1.1

Win7发现访问的不是同一网段的地址,因此需要求助网关(172.16.1.1)

数据发往网关之后,网关设备(Linux服务器),查询路由表,就往外网发送。

之后通过互联网的路由可以到达百度。百度需要返回网页数据给win7

源IP地址是1.1.1.1,目的是172.16.1.100

百度没有返回172.16.1.100的路由(因为172.16.1.100是私网地址) 

有去无回!!!!


做完NAT

百度的IP地址是1.1.1.1

需要通过Windows 7访问百度,那么需要构造数据包,源IP地址是172.16.1.100,目的是1.1.1.1

Win7发现访问的不是同一网段的地址,因此需要求助网关(172.16.1.1),

数据发往网关之后,网关设备(Linux服务器),查询路由表,完成NAT源地址的转换,往外网发送。

源地址是192.168.124.16(公网地址),目的是1.1.1.1

此时通过互联网的路由可以到达百度。百度需要返回网页数据给win7

源IP地址是1.1.1.1,目的是192.168.124.16(公网地址)

百度有路由返回,到达Linux设备后,设备再根据NAT表象,将192.168.124.16转换成172.16.1.100

源IP地址是1.1.1.1,目的是172.16.1.100,

就可以返回给win7


配置Windows 7和RHEL/CentOS 7的IP地址,并且相互能够ping通,

image.png

Windows 7无访问外网

image.png

确保Linux虚拟机能访问外网

image.png


安装iptables,关闭firewalld,确保iptables规则为空

关闭firewalld。

systemctl stop firewalld

iptables  -F   清除规则

iptables -L   查看规则


image.png

systemctl start iptables开启iptables

systemctl status  iptables查看状态是否开启

image.png

开启Linux的路由存储转发功能

通过命令cat  /proc/sys/net/ipv4/ip_forward查看,当回显数值为1的时候表示开启路由存储功能。

但是我这里是1就不用开,可能红帽7.4默认开着,最好一起做一遍

image.png

因此需要修改文件/etc/sysctl.conf,在尾部加入,net.ipv4.ip_forward = 1

image.png

通过命令cat  /proc/sys/net/ipv4/ip_forward查看,当回显数值为1的时候表示开启路由存储功能。

image.png

使用

sysctl -p

立刻生效

image.png

配置NAT

默认情况下,nat表为空

iptables -L -t nat

image.png

由于需要通过NAT来访问外网,需要针对源IP地址进行修改,使用SNAT,须要在POSTROUTING规则链中配置

将源为192.168.192.0/24的地址全部转换成192.168.123.72

注意:192.168.192.0以及192.168.123.72为我电脑虚拟机的仅主机以及桥接分配的ip,请不要照抄我的,自己查看虚拟机分配的仅主机以及桥接的ip

iptables -t nat -A POSTROUTING -s 192.168.192.0/24 -j SNAT --to-source  192.168.123.72

当数据包处理到POSTROUTING这个过程(规则链)的时候(POSTROUTING),调用nat表(nat功能)(-t nat),即针对数据报文中源IP地址未172.16.1.0/24的数据(-s 192.168.192/24),将其源ip地址进行转换(-j SNAT),转换成192.168.123.72(--to-source 192.168.123.72)

image.png


通过命令 iptables -L -t nat 查看

image.png


保存iptables状态

service iptables save

image.png

数据发往网关之后,网关设备(Linux服务器),查询路由表,完成NAT源地址的转换,往外网发送。

win7默认网关改为iptable服务的那台仅主机网卡ip

dns添加114.114.114.114

8.8.8.8

image.png

ping测试

image.png

访问网页测试

image.png


DNAT部分

(安装apache)

yum install httpd  

  安装不了请查看yum仓库是否挂载:mount /dev/cdrom  /mnt

或者配置错误:点我查看配置yum仓库

(仅主机模式)  ( 192.168.192.135)    

image.png

自动获取!

image.png

仅主机模式)RHEL/CentOS 7(桥接两张网卡(172.16.1.1)

            image.png

桥接自动获取到的ip

image.png                

仅主机自动获取到的ip

image.png

互联网(192.168.123.16) 

image.png

vim /etc/httpd/conf/httpd.conf 编辑文件

image.png

添加以下内容,更改为你得ip及域名

<VirtualHost 192.168.192.135>
     DocumentRoot  /var/www/html/www
     ServerName  www.mamublog.com
 <Directory /var/www/html/bbs>
         AllowOverride None
         Require all granted
 </directory>
 </VirtualHost>
<VirtualHost 192.168.192.135>
     DocumentRoot  /var/www/html/mamublog
     ServerName  mamublog.com
 <Directory /var/www/html/bbs>
         AllowOverride None
         Require all granted
 </directory>
 </VirtualHost>

image.png

在/var/www/html目录下

image.png

touch 命令创建mamublog 以及www文件夹

image.png

image.png

将网站源码文件上传到这两个文件夹中

image.png

image.png

更改hosts

vim /etc/hosts

image.png

vim /etc/sysctl.conf 

加入

尾部加入:net.ipv4.ip_forward = 1

image.png

通过命令

cat  /proc/sys/net/ipv4/ip_forward

查看,当回显数值为1的时候表示开启路由存储功能。

image.png

配置DNAT

iptables -t nat -L -PREROUTING

默认情况下是没有任何策略的

image.png

iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to-destination 192.168.192.135:80

image.png

用二号访问ip也可以看到网页

image.png






打赏 支付宝打赏 微信打赏
 您阅读本篇文章共花了: 

本文地址:https://www.mamublog.cn/post/110.html
版权声明:本文为原创文章,版权归 mamublog 所有,欢迎分享本文,转载请保留出处!

推荐文章

发表评论


表情

还没有留言,还不快点抢沙发?