博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iptables filter表案例、iptables nat表应用
阅读量:6237 次
发布时间:2019-06-22

本文共 2944 字,大约阅读时间需要 9 分钟。

iptables filter表案例

案例:

需求:把80端口22端口21端口放行,22端口指定一个IP段,只有这个IP段的ip访问的时候才可以访问到,其他段的都拒绝。

我们先编写一个shell脚本

vim /usr/local/sbin/iptables.sh 加入如下内容

#! /bin/bashipt="/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.71.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

iptables filter表案例、iptables nat表应用

每条代码的含义:

ipt="/usr/sbin/iptables" 定义变量,这样就不用每次都打后面这么长的地址。

iptables filter表案例、iptables nat表应用

$ipt -F 把之前的规则清除掉,(没有-f指定表,默认就是filter表)

iptables filter表案例、iptables nat表应用

$ipt -P INPUT DROP 定义默认的策略,这一条是把INPUT链DROP掉

iptables filter表案例、iptables nat表应用

$ipt -P OUTPUT ACCEPT 把OUTPUT链设置成ACCEPT

iptables filter表案例、iptables nat表应用

$ipt -P FORWARD ACCEPT 把FORWARD链设置成ACCEPT

iptables filter表案例、iptables nat表应用

然后我们来添加规则,下面这条规则是让通信更加顺畅

iptables filter表案例、iptables nat表应用

然后把这个这个网段的访问22端口的数据包放行。

iptables filter表案例、iptables nat表应用

把80端口数据包放行。

iptables filter表案例、iptables nat表应用

把21端口数据包放行。

iptables filter表案例、iptables nat表应用

因为这个操作里有一个-p INPUT DROP操作,所以必须要写脚本才行。

iptables filter表案例、iptables nat表应用

wq 保存,执行脚本sh /usr/local/sbin/iptables.sh(放行网段时注意别把自己的远程给断了)

sh /usr/local/sbin/iptables.sh

iptables filter表案例、iptables nat表应用

然后我们可以查看一下,192.168.71.0/24段的IP可以访问22端口,然后打开了80和21端口

iptables filter表案例、iptables nat表应用

icmp示例

iptables filter表案例、iptables nat表应用

你ping外面的机器可以ping通,但是本机ping不通,也就是让别人ping不通你的机器。

iptables nat表应用(上)

做个小实验

A机器两块网卡ens33(192.168.71.131)、ens37(192.168.72.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens33(192.168.72.2),和A机器ens37可以通信互联。

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

首先准备两台机器,(如果担心实验一次性做不好可以做一个快照)

首先给01机器添加一块网卡(就是网络适配器),然后点击添加好的网卡在右侧选择LAN区段(相当于给这个网卡连到了内网的交换机上,这个交换机你的windows是连不上的,这样的话01机器和02机器连上同一台内网交换机,他们两个通信就可以了,其他不用管)

iptables filter表案例、iptables nat表应用

然后点击添加一个LAN区段

iptables filter表案例、iptables nat表应用

然后点击下拉选中你添加的LAN区段,之后点击确定。

iptables filter表案例、iptables nat表应用

然后我们给第二个机器也添加一块网卡,(方法通上)如果已经有了一块编辑好了网卡我们可以把它的启动时连接前面的勾去掉。然后再添加一块新的网卡,使用同一内网LAN段

iptables filter表案例、iptables nat表应用

iptables filter表案例、iptables nat表应用

到这里准备工作就做好了(第一个机器有两个网卡,第二个机器有一个网卡),下面我们把两个机器启动。

启动之后我们查看一下01机器的网卡,可以看到多了一个网卡,然后我们给它设置ip,有两种方法,

1.可以把原来的网卡复制一份改名叫新添加的网卡名,然后vi改ip以及netmask即可。

2.使用ifconfig 网卡名 要修改的IP/IP段 修改临时IP 重启后失效

fconfig ens37 192.168.72.1/24

iptables filter表案例、iptables nat表应用

然后我们给02机器新添加的网卡也设置一下ip,方法如上。之后尝试一下01和02能不能互相ping通(应该是通的)。还有Windows能不能ping通两台机器后添加的网卡(应该是不通的),还要试一下02能不能ping通外网。

02ping01(能通)

iptables filter表案例、iptables nat表应用

01ping02(能通)

iptables filter表案例、iptables nat表应用

02ping外网(192.168.71.131就是一个外网IP 不通)

iptables filter表案例、iptables nat表应用

windows去Ping01(不通)

iptables filter表案例、iptables nat表应用

iptables nat表应用(中)

准备工作已经做好,下面我们就开始操作了

要想使用nat表使用网路的转发必须要修改内核参数,打开端口转发,如下(下面文件默认的内容是0,表示没有开启内核参数,1表示开启)

01机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward

查看是0还是1

cat /proc/sys/net/ipv4/ip_forward

iptables filter表案例、iptables nat表应用

是0没有开启,我们现在打开端口转发

echo "1">/proc/sys/net/ipv4/ip_forward

iptables filter表案例、iptables nat表应用

第二步增加一条规则,有了这个规则就可以实现上网了。(192.168.72.2/24就是02机器的IP,添加进去后iptables -t nat -nvL查看会变成192.168.72.0/24)

iptables -t nat -A POSTROUTING -s 192.168.72.2/24 -o ens33 -j MASQUERADE

iptables filter表案例、iptables nat表应用

然后给02机器设置网关

route add default gw 192.168.72.1

iptables filter表案例、iptables nat表应用

然后我们再用02机器去ping01机器的外网ip应该是可以ping通的。这就意味着它可以和外网通信了。

就是相当于把A机器当成路由器,B可以访问外网,但是外网访问不到B。

iptables nat表应用(下)

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

就是做一个端口映射。

A打开端口转发

echo "1">/proc/sys/net/ipv4/ip_forward

然后删除A原来的规则,

iptables -t nat -D POSTROUTING -s 192.168.72.0/24 -o ens33 -j MASQUERADE

iptables filter表案例、iptables nat表应用

然后添加规则,如下规则意思是,把进来的数据包做一个端口转发,转发给B。

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

iptables filter表案例、iptables nat表应用

上面是进去的包,还有一个回来的包如下规则意思是:从B回来的包经过A时做一个snat操作,把目标地址改成192.168.71.131

iptables -t nat -A POSTROUTING -s 192.168.72.2 -j SNAT --to 192.168.71.131

iptables filter表案例、iptables nat表应用

然后给B机器加上网关,就完成了

测试

建立一个新的ssh远程连接,端口选择1122,输入01的外网IP
iptables filter表案例、iptables nat表应用

转载于:https://blog.51cto.com/13658403/2114469

你可能感兴趣的文章
How to describe the numerical values?
查看>>
CorelDRAW中如何复制对象属性详解
查看>>
深入理解javascript原型和闭包(9)——简述【执行上下文】下
查看>>
js 复制粘贴
查看>>
插入排序算法的C语言实现
查看>>
开学考试心得感想
查看>>
window下安装nodejs,npm,cnpm,bower 以及vue
查看>>
事件分发机制
查看>>
SQL Server性能优化(14)索引碎片
查看>>
ORA-01688表空间无法扩展
查看>>
Xcode c语言如何清空输入缓冲区
查看>>
Linux磁盘和文件系统管理(5)_创建交换分区
查看>>
业务分析
查看>>
Receive Windows Messages In NonWindowed Control
查看>>
MySQL之MHA+keepalived方案演示(五)
查看>>
mysql5.7和mysql5.6默认的sql_mode说明
查看>>
自动修改Linux下/etc/sysconfig/network-scripts/ifcfg-ethX网卡文件的脚本
查看>>
$(this) dom对象错误的问题
查看>>
Linux散碎知识点_updating
查看>>
iptables参数详解
查看>>