博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
netfilter的filter表案列与nat表应用
阅读量:6955 次
发布时间:2019-06-27

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

一、fileter表案例

需求:只针对filter表,预设策略INPUT链DROP,其他两个链ACCEPT,然后针对192.168.204.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。

这个需求不算复杂,但是因为有多条规则,所以最好写成脚本的形式。脚本内容如下:

[root@zlinux ~]# cat /usr/local/sbin//iptables.shcat: /usr/local/sbin//iptables.sh: 没有那个文件或目录[root@zlinux ~]# vim !$vim /usr/local/sbin//iptables.sh#! /bin/bashipt="/sbin/iptables"$ipt -F                                                   //清空规则$ipt -P INPUT DROP                           //指定INPUT链默认动作DROP$ipt -P OUTPUT ACCEPT                  //指定OUTPUT链默认动作ACCEPT$ipt -P FORWARD ACCEPT              //指定OUTPUT链默认动作ACCEPT$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT          //指定状态放行$ipt -A INPUT -s 192.168.204.0/24 -p tcp --dport 22 -j ACCEPT   //针对ip段开通22端口$ipt -A INPUT -p tcp --dport 80 -j ACCEPT        //对所有网段开通80端口$ipt -A INPUT -p tcp --dport 21 -j ACCEPT        //对所有网段开通21端口

netfilter的filter表案列与nat表应用

然后执行脚本:

# sh /usr/local/sbin/iptables.sh

netfilter的filter表案列与nat表应用

可以看到包的数量是在变化的。
关于icmp的包有一个比较常见的应用:

[root@zlinux ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP

--icmp-type 这个选项是要跟-p icmp 一起使用的,后面指定类型编号。这个8指的是能在本机ping通其他机器,而其他机器不能ping通本机。这个有必要记一下。

二、nat表的应用

linux的iptables功能是十分强大的,只有想不到没有做不到!也就是说只要你能够想到的关于网络的应用,linux都能帮你实现。在日常生活中相信你接触过路由器吧,它的功能就是分享上网。本来一根网线过来(其实只有一个公网IP),通过路由器后,路由器分配了一个网段(私网IP),这样连接路由器的多台pc都能连接intnet而远端的设备认为你的IP就是那个连接路由器的公网IP。这个路由器的功能其实就是由linux的iptables实现的,而iptables又是通过nat表作用而实现的这个功能。那么直接来举例说明:

现有条件:
A机器两块网卡ens33(192.168.204.128)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
为达到实验条件,先准备两台虚拟机:
1、在VMware克隆一下现有的虚拟机(A机器),并把克隆的虚拟机命名为zhulinux2(B机器);
2、对A机器的网卡进行增加,并且设置成LAN区段为“自定义区段”,表示内部网络地址;
netfilter的filter表案列与nat表应用
netfilter的filter表案列与nat表应用
3、对B机器的网卡设置成ens37,IP地址192.168.100.100/24,并把网络适配器改成LAN区段,与A机器一样,如下图所示:
netfilter的filter表案列与nat表应用
4、设置A机器ens37网址;
netfilter的filter表案列与nat表应用
5、设置B机器的ens37网址,先关闭ens33网卡,因为可以访问外网:
netfilter的filter表案列与nat表应用
需求:
1、可以让B机器连接外网:
A机器操作:

[root@zlinux ~]# echo "1">/proc/sys/net/ipv4/ip_forward   //打开路由转发功能[root@zlinux ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

B机器操作,设置默认网关,设置好之后就可以连接外网了:

netfilter的filter表案列与nat表应用
这个ping百度,是因为设置了dns。
2、C机器只能和A通信,让C机器可以直接连通B机器的22端口:
A机器操作:

[root@zlinux ~]# iptables -t nat -A PREROUTING -d 192.168.204.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22[root@zlinux ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.204.128[root@zlinux ~]# iptables -t nat -nvLChain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destination             0     0 DNAT       tcp  --  *      *       0.0.0.0/0            192.168.204.128      tcp dpt:1122 to:192.168.100.100:22Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destination         Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destination             3   213 MASQUERADE  all  --  *      ens33   192.168.100.0/24     0.0.0.0/0               0     0 SNAT       all  --  *      *       192.168.100.100      0.0.0.0/0            to:192.168.204.128

netfilter的filter表案列与nat表应用

至此,连接成功。

转载于:https://blog.51cto.com/3069201/2065077

你可能感兴趣的文章
效率篇-SQL自助查询平台
查看>>
iOS 图片浏览器
查看>>
小蚂蚁学cURL笔记(1)
查看>>
一,二,四(1)单元练习题
查看>>
sql自动生成分组序号
查看>>
CentOS7 下源码安装MySQL 8.0.11
查看>>
nginx使用ssl模块配置HTTPS支持
查看>>
Oracle中删除用户遇到的问题
查看>>
Javascript中创建对象的几种方法
查看>>
apache2中修改错误日志中的错误级别
查看>>
Linux 的date命令用法
查看>>
手机木马假冒“中国银联”App,专偷信用卡。
查看>>
Fedora 下 Gedit 打开txt文件乱码
查看>>
redis主配置文件
查看>>
sql语句获取日期大于当前日期的数据库数据
查看>>
http
查看>>
Linux目录简介及哲学思想
查看>>
清除线上k8s中node节点无用的镜像
查看>>
pl/sql txt格式的文件导入Oracle
查看>>
搜狗大数据总监、Polarr 联合创始人关于深度学习的分享交流
查看>>