iptables filter表案例、iptables nat表应用 使用介绍

第7周第4次课(5月10日)

课程内容:

10.15 iptables filter表案例
10.16/10.17/10.18 iptables nat表应用

扩展
1. iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html
2. sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html
3. iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html

 

10.15 iptables filter表案例

案例需求:需要把80、22、21端口放行,但是22端口需要指定一个IP段,只有这个IP段的IP访问的时候才可以访问到,其他IP段的一概拒绝。

可以通过一个脚本实现,脚本其实就是批量执行一些命令。

操作实例如下:

vim /usr/local/sbin/iptables.sh  编辑这个文件,加入如下内容。

#! /bin/bash
ipt="/usr/sbin/iptables"  ipt定义一个变量,以全局的绝对路径方式。
$ipt -F  -F把之前的规则清空
$ipt -P INPUT DROP  把默认的策略定义一下
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT

PS:第一条规则目的是为了把相关数据包进行连接,通讯更加顺畅。 

        第二条规则指定IP段的数据包放行

        第三条规则把80端口放行

        第四条规则把21端口放行

因为有一个DROP,所以需要使用脚本,可以批量执行命令,如果不用脚本那么客户端就会断开。

ICMP案例  iptables -I INPUT -p icmp --icmp-type 8 -j DROP  可以ping通公网,但是无法ping本机IP,主要实现的目的就是禁止ping本机,type 8表示有8种类型。

 

10.16/10.17/10.18 iptables nat表应用

需求1:可以让B机器连接外网

操作实例如下:

1、首先需要准备2台机器并配置网卡,可以在虚拟机jimmylinux-001上面添加一个虚拟网卡。

按照默认方式添加后点完成

按如下图顺序操作

2、同样把jimmylinux-002添加一块虚拟网卡,方法同上,需要特别注意的是2台机器必须要选择同一个区段,同一个交换机。

添加完2台机器的虚拟网卡后都需要重启系统,重启好后再连接查看网卡信息。

需要给ens37网卡添加一个IP地址,我们可以通过命令方式修改IP或者copy一份ens33网卡配置文件修改IP和netmask即可。

[root@jimmylinux-002 ~]# ifconfig ens37 192.168.100.1/24  手动命令行方式修改IP

这个IP重启系统就自动失效了,如果想永久生效,就是copy一份ens33的网卡配置文件并修改IP。

第二台机器因为把网卡连接断开了,所以无法直接从远程终端登录,只能够到VMware虚拟机登录。

登录后同样使用命令行方式修改ens37网卡的IP

下面开始排查无法ping通A机器的问题

在虚拟机先看看B机器是否可以ping通自己

然后在远程终端看看A机器ens37网卡状态

[root@jimmylinux-002 ~]# ifconfig ens37 192.168.100.1/24  重新使用命令指定IP

[root@jimmylinux-002 ~]# ping 192.168.100.100  再ping  B机器就可以ping通了

同样在虚拟机上面ping  A机器也可以ping通了

通过上面的操作,已经把准备工作做好了。

1、要想使用nat表网络转发,必须要修改内核参数,默认这个文件/proc/sys/net/ipv4/ip_forward是0,如果是0表示它没有开启内核转发。

2、增加一条规则,有了这条规则就可以实现上网了。

[root@jimmylinux-002 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

这条规则就是想让192.168.100.0这个网段能够上网

3、B机器上需要设置网关为192.168.100.1

再去ping A机器的ens33网卡IP就可以ping通了

在B机器上面修改vi /etc.resolve.conf 添加DNS nameserver  119.29.29.29保存退出

如果可以ping通119.29.29.29或www.qq.com,就说明可以访问公网了。

在这个场景里面,A机器就好比路由器,B机器就是客户端,比如是手机。

 

需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口

在cmd里面ping B机器还是不通,每次操作都需要在虚拟机操作太麻烦,我想在远程终端登录,这个时候既然不能够直接连接192.168.100.100,但是可以连接192.168.52.129,A机器可以连,那我可以通过A机器跳转到B机器做一个跳转,这个就叫端口隐射。

1、第一步同样是打开端口转发

2、添加规则,但是需要把先前添加的规则删除,避免影响到现在的操作。

[root@jimmylinux-002 ~]# iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

删除之前的规则后重新添加新的规则,把进来的包做一个转发,到100.100:22端口。

[root@jimmylinux-002 ~]# iptables -t nat -A PREROUTING -d 192.168.52.129 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

在添加一个回来的包的规则

[root@jimmylinux-002 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.52.129

从100.100回来的包经过A机器再做一个SNAT操作,把目标地址改成192.168.52.129

3、在B机器上面添加网关192.168.100.1 需求1已经添加,所以这里不用在添加了。

都设置好以后,在使用远程终端连接,如果可以连接成功并且能够ping通公网www.qq.com 说明实验成功。

 

posted @ 2018-05-09 17:42  吉米乐享驿站  阅读(223)  评论(0编辑  收藏  举报