第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表应用

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

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

操作实例如下:

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

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

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

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

按如下图顺序操作

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在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、第一步同样是打开端口转发

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

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 说明实验成功。

 

相关文章:

  • 2021-12-03
  • 2021-04-20
  • 2021-10-24
  • 2022-12-23
  • 2021-10-22
  • 2021-07-21
  • 2021-04-17
  • 2021-05-11
猜你喜欢
  • 2021-07-14
  • 2021-08-28
  • 2021-07-02
  • 2021-09-07
  • 2021-06-14
  • 2021-12-01
  • 2021-06-17
相关资源
相似解决方案