iptables filter表案例,iptables nat表应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables filter表案例,iptables nat表应用相关的知识,希望对你有一定的参考价值。

笔记内容:

10.15 iptables filter表案例

10.16/10.17/10.18 iptables nat表应用

笔记日期:2017.8.30

 

10.15 iptables filter表案例

技术分享

这个案例的需求是把802221端口方放行,然后给22端口指定一个IP段,只有这个指定的IP访问才能访问到22端口,其他IP则一概拒绝访问22端口,这个需求用一个shell脚本来实现。

1.使用此命令新建一个文件: vim /usr/local/sbin/iptables.sh

  2.输入以下内容:

#!/bin/bash

ipt="/usr/sbin/iptables"

$ipt -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.77.1/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

技术分享

3.完成后保存退出。

 

ipt="/usr/sbin/iptables"

这句是定义一个变量,定义变量时使用的路径尽量使用绝对路径,以免出现环境变量的问题,导致命令无法执行。

 

$ipt -F

清空之前的所有规则,因为没有加-t所以默认修改的是filter

 

$ipt -P INPUT DROP

把默认的INPUT策略定义为DROP

 

$ipt -P OUTPUT ACCEPT

把默认的OUTPUT策略定义为ACCEPT

 

$ipt -P FORWARD ACCEPT

把默认的FORWARD 策略定义为ACCEPT

 

$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

添加一个规则,使用-m指定一些状态,然后-j指定对 RELATEDESTABLISHED状态的数据包放行,它的目的是为了相关的数据包能够更方便的连接

 

$ipt -A INPUT -s 192.168.77.1/24 -p tcp --dport 22 -j ACCEPT

添加一个规则,使用-s指定一个源IP和端口,-p指定连接协议,接着指定放行此IP22端口访问。

 

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT

添加一个规则,把80端口放行

 

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT

添加一个规则,把21端口放行

 

使用shell脚本是为了能够执行批量的命令,因为脚本中第三句命令就是DROPINPUT,如果不使用shell脚本的话会直接断开远程终端的连接,后续的命令就无法在进行输入了。

 

4.使用sh命令执行写好的shell脚本:sh /usr/local/sbin/iptables.sh

技术分享


5.执行完脚本后使用iptables -nvL命令就可以查看到添加上去的规则:

技术分享




介绍一下icmp的作用

命令:

iptables -I INPUT -p icmp --icmp-type 8 -j DROP

技术分享

这个规则就是让你能够ping通别人的机器,别人ping不通你的机器。


ping一个网址,可以ping通:

技术分享


但是外面的机器要ping过来就ping不通:

技术分享


把规则删除后其他机器才能ping过来:

技术分享

技术分享




10.16/10.17/10.18 iptables nat表应用

技术分享

需求:现在我有两台机器,A机器共有两块网卡,一块是可以连接外网的,一块是可以连接内网的。B机器则只有一个内网网卡,不能连接外网,只能连接内网。现在的需求就是想要B机器能够连接外网,说白了就是想做一个路由器的功能。

  1.首先做这个实验需要两个虚拟机,记得先拍摄一个快照,以免在实验过程中出现问题无法恢复:

技术分享


2.给其中一台虚拟机添加一个网卡:

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享



3.把另一台虚拟机的网卡禁止掉,然后添加一个新网卡,同样指定刚刚添加的那个LAN区段:

技术分享

技术分享

技术分享



4.将两台虚拟机启动起来,然后给新网卡配置IP,先配置CentOS Study1,使用ifconfig命令可以看到新网卡的信息:

技术分享


接着使用ifconfig命令给新网卡配置一个IP,设置24网段:

技术分享


  但是这种方式配置的IP重启系统就没有了,想要有永久有效就需要把网卡配置文件复制一份出来,将文件名称改为该网卡的名称,然后将里面的配置信息改为这个网卡IP

技术分享

技术分享

技术分享


5.配置另一台虚拟机的网卡IP

技术分享


同样的使用ifconfig命令配置IP

技术分享


接着复制网卡文件,并修改为新网卡的信息:

技术分享

技术分享

修改完后重启一下网卡服务,但是可能会重启失败,如果重启失败就重启操作系统即可。

 


以上操作成功后就ping一下CentOS Study1IP看看是否能ping通:

技术分享


  如果无法ping通证明有问题,需要去检查一下,CentOS Study1IP是否存在,如果CentOS Study1IP存在的话,就检查一下CentOS Study2IP是否存在,发现IP不存在的话就重新使用ifconfig命令配置一下即可。我这里ping不通的问题是CentOS Study2IP不存在,所以我重新用ifconfig配置了IP之后再重启了一下就没问题了:

技术分享

技术分享

如果出现多次使用ifconfig命令配置IP之后,IP却消失的情况,就得查看这个网卡的网卡配置文件是否有问题。




6.准备工作都就绪之后,确保两个网卡都可以互相ping之后,就开始完成需求1:让CentOS Study2可以连接外网:

首先打开CentOS Study1nat路由中转发,这一步需要修改一下内核参数,需要修改/proc/sys/net/ipv4/ip_forward文件,这个文件默认的值为00代表没有开启转发,所以我们要将这个值改为1

技术分享

技术分享


第二步,增加一条规则:

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eno16777728 -j MASQUERADE

技术分享

技术分享

这一步要注意的是,网卡的名称看清楚得是能链接外网网卡的那个网卡名称,搞错了后续步骤就会失败。



第三步,给CentOS Study2设置默认网关:

技术分享


设置了默认网关后可以使用route -n查看一下,是否设置成功:

技术分享


设置了默认网关后ping一下CentOS Study1的外网网卡IP和虚拟机的网关地址看看能不能ping通:

技术分享

技术分享


  能ping通之后,就代表可以连接外网了,但是这时候还不能够ping网址,所以接下来我们给CentOS Study2设置一下DNS,看看能否连接网站:

技术分享

技术分享


然后ping一下DNS的地址看看是否能ping通:

技术分享


ping的通就代表没问题,这时候就可以ping一下一些网站了:

技术分享

  能ping通网址的话,就代表这个台内网的机器已经可以通过CentOS Study1nat转发来连接外网了,现在CentOS Study1就相当于充当了一个路由器的角色,通过这台机器就可以让内网的机器得以连接外网了。





10.18 iptables nat表应用(下)

需求2:现在使用Windows是不能连接CentOS Study2的,所以现在的需求就是能够远程连接CentOS Study2。要实现这个需求需要通过CentOS Study1进行一个跳转,也就是所谓的端口映射,把CentOS Study222端口映射到CentOS Study1上。

第一步,打开路由转发:

技术分享


  第二步,添加规则,因为之前添加了一条规则,现在先把那条规则删掉以免影响操作:

技术分享

添加两条规则:


第一条,是发送过来的包:

iptables -t nat -A PREROUTING -d 192.168.77.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

技术分享

这条规则是把192.168.77.1301122端口的数据包,转发到192.168.100.10022端口上去。


第二条,是反馈回去的包:

iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.77.130

技术分享

这条规则是把192.168.100.100返回的数据包,转发到192.168.77.130上去,然后回到Windows


添加完规则检查一下是否存在nat表里:

技术分享



第三步,以上操作没问题后,给CentOS Study2设置默认网关:

技术分享


完成以上操作之后,在XShell里新建一个会话,连接192.168.77.1301122端口:

技术分享


同样的会询问一下:

技术分享


输入用户名,这里输入的是内网机器的用户名,不是CentOS Study1的用户名,因为这一步数据包实际上是通过了CentOS Study1上映射的1122端口转发到了CentOS Study222端口上了:

技术分享


输入CentOS Study2的密码:

技术分享


登录成功:

技术分享


使用ifconfig命令就可以知道我们连接的是CentOS Study2

技术分享


现在不单只外面的机器能够通过CentOS Study1来远程连接CentOS Study2CentOS Study2也可以连接外网:

技术分享



在以上的操作期间我解决了一个问题,一开始在使用ifconfig给两台机器分配IP的时候,我没有去给新网卡复制配置文件,结果给CentOS Study2机器设置默认网关后无法ping通外网,然后折腾了好久才想到去复制配置文件,把两个机器的配置文件弄好后,CentOS Study1重启了网卡服务,CentOS Study2则重启网卡服务失败,我就重启了CentOS Study2的系统,然后检查两台机器互相能ping同之后,再完成后续步骤就成功了,所以当出现这种问题的时候要去检查一下网卡配置文件是否有问题。

 

 

 

 

扩展

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


本文出自 “12831981” 博客,请务必保留此出处http://12841981.blog.51cto.com/12831981/1973388

以上是关于iptables filter表案例,iptables nat表应用的主要内容,如果未能解决你的问题,请参考以下文章

iptables filter表案例及iptables nat表应用

iptables filter表案例iptables nat表应用

iptables filter表 案例iptables nat表

iptables filter表案例,iptables nat表应用

三十iptables filter表小案例iptables nat表应用

iptables filter表案例 iptables nat表应用