文档章节

32.filter表案例 nat表应用 (iptables)

 王鑫linux
发布于 07/16 02:00
字数 1942
阅读 6
收藏 0

10.15 iptables filter表案例

10.16/10.17/10.18 iptables nat表应用

 

 

10.15 iptables filter表案例:

 

~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我要指定一个IP段,只有这个IP段的IP能访问到。其他段的一概拒绝。需要通过一个脚本来指定(脚本可理解为一个批量执行的命令)、

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

#! /bin/bash 通过脚本来实现

ipt=“/usr/sbin/iptables” 首先定义ipt这个变量,下面频繁用到,不至于那么繁琐(写脚本时尽量用绝对路径)

$ipt -F 清空之前的规则 (我们没有-t指定一个表。所以为filter表)

$ipt -P INPUT DROP 指定INPUT的默认规则为DORP(也是为什么要用脚本的原因,不至于不能远程连接)

$ipt -P OUTPUT ACCEPT 指定OUTPUT的默认规则为ACCETP(也就是默认规则)

$ipt -P FORWARD ACCEPT 指定FORWARD的默认规则为ACCETP(也就是默认规则)

然后下面加一些规则出来

$ipt -A INPUT -m state --state RELATED(可理解为链接的其他链接),ESTABLISHED(即为保持链接) -j ACCEPT

必须要写的

制定了一些状态,把他们放行。这些不太常用,但是要写进来。因为我们要满足上面的需要,这些需要总有一个相互链接的过程,为的是让他们更顺利的链接

$ipt -A INPUT -s 192.168.159.0/24 -p tcp --dport 22 -j ACCEPT 以上需求,按照22端口的规则的数据包放行

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT 以上需求,80端口的数据包放行

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT 以上需求,21端口的数据包放行

保存退出后,要链接他。sh /usr/local/iptables.sh

iptables -nvL可查看

~2. icmp示例

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

ping外面的机器可以ping通,ping本机就不ping(外面的也ping不通本机)

 

 

实例:

1.

[root@axinlinux-01 ~]# vim /usr/local/sbin/iptables.sh

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.159.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

[root@axinlinux-01 ~]# sh /usr/local/sbin/iptables.sh

[root@axinlinux-01 ~]# iptables -nvL

Chain INPUT (policy DROP 0 packets, 0 bytes)

pkts bytes target prot opt in out source destination

22 1872 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

0 0 ACCEPT tcp -- * * 192.168.159.0/24 0.0.0.0/0 tcp dpt:22

0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80

0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21

--

-

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

10.16/10.17/10.18 iptables

 

 

~1. nat表应用

~2. A机器两块网卡ens33(192.168.159.128)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联

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

说白了就是做个小路由器(A机器),小路由器可以上网,那么电脑就可以上网

首先,我们需要两台机器。给01添加网卡 实例~3.

~4. A机器上打开路由器转发 echo "1">/proc/sys/net/ipv4/ip_forward

默认这个路径文件为0,即代表没有开启内核转发。因为要使用nat的应用,必须要打开nat的端口转发

~5. A上执行iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

这条规则,就是想让100.0这个网段可以上网

添加这条规则,就可以上网了

~6. B上设置网关为192.168.100.1

设置网关的目的:试想一下,你的数据包过去,从A到B,从B到A,我怎么到A呢?肯定的需要一个网关啊,默认网关给他设置好。写法为:

route add default gw 192.168.100.1

执行完这个就可以与公网通信了(也就是01的IP)。我们在设置一下dns(vi etc/resolv.conf),就可以与外网通信了。

vi之后加上 nameserver 119.29.29.29 这个是dns的公共dns.详见实例,~5.

其实到这,就会发现,A机器(01)就是个路由器。B机器(02)通过A机器(01)上网

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

意思是,远程连接B机器。因为A机器可以远程,通过A机器跳转到B机器,达到远程连接B的目的。而这个就叫做“端口映射”

把B机器的22端口映射出来。A机器的端口已经了吧,是可以远程的。我们把他映射成其他的。也就是说,我们访问这个其他的端口,实际上就是访问的B机器的22端口。从而达到远程B机器的目的。如图:

~8. A上打开路由器转发echo "1">/proc/sys/net/ipv4/ip_forward

同样的打开端口转发

~9. A上执行 iptables -t nat -A PREROUTING -d 192.168.159.150 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

这个是进来的,我的是159.128,给他转发到100.100的22端口

~9. A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.159.150

这是回来的包,回来的包也要做一个操作

就从100.100回来的包,经过这个A机器,给他在做一个SNAT操作,把目标地址改成159.128

~10. B上设置网关为192.168.100.1

要给B加上网关,一样的操作

route add default gw 192.168.100.1

 

实例:

~3.

首先准备01 的需求

 

6.选择网络适配器2,点lan区段(相当于连到内网的交换机上,这个交换机windows机器是连不上的。我们这两台机器01和02我们连上同一个交换机就可以通信了)

 

11.我们02也相同的连上同样的lan区段(也就是连上同样的交换机)

以上准备工作已完成,启动机器(注意,此时我们远程不上02,是因为改成了lan区段)

12.此时01上,ifconfig会出现新的网卡ens37,我们要修改他的配置IP、网段,可以手动命令行来设置

ifconfig ens37 192.168.100.1/24 (当然只是在内存中更改的,重启就没有了,想要永久生效,就要编辑配置文件。需要cp ens33的,去修改好几个地方)

[root@axinlinux-01 ~]# ifconfig ens37 192.168.100.1/24

这样两块网卡就设置好了。外网(ens33)内网(ens37)

13.那再来设置02机器的需求

因任务需要,保险起见。我们可以先ifdown掉ens33.这样02只跟01通信

14.同样的我们根据需求,可以用手动命令行来设置02的IP

小案例:阿鑫在具体修改ens37的时候,并没有ens37这个网卡。重新添加了新的网卡,并且连接了同样01的lan区段,才有的ens37这个网卡

ifconfig ens37 192.168.100.100/24

小案例:阿铭视频中,ping 01是ping不通的,是因为01 ens37的IP莫名没有了,有ifconfig设置了一下,就好了

以上,准备工作已全部完成(~2.的准备工作完成)

 

~4.

[root@axinlinux-01 ~]# cat /proc/sys/net/ipv4/ip_forward

0 默认0,没有开启内核转发

[root@axinlinux-01 ~]# echo "1">/proc/sys/net/ipv4/ip_forward 修改参数

[root@axinlinux-01 ~]# cat /proc/sys/net/ipv4/ip_forward

1 已打开

 

~5.

route -n查看网关,显示没有网关。 route add default gw 192.168.100.1设置默认为这个网关

~6.

vi etc/resolv.conf

这个时候就可以ping通这个公共dns了。当然也可以ping通外网了。但是外网ping不同这个。

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
粉丝 4
博文 74
码字总数 139302
作品 0
济南
10.15 iptables filter表案例 10.16/10.17/10.18 iptable

七周四次课 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 打开端口转发, 调整内核参数 增加一条...

wb_rambo123
01/26
0
0
10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用

15 iptables filter表案例 iptables小案例 vi /usr/local/sbin/iptables.sh //加入如下内容 执行: sh /usr/local/sbin/iptables.sh icmp示例 iptables -I INPUT -p icmp --icmp-type 8 -j D......

夜归人8421
01/25
0
0
Day32 iptables filter表案例、iptables nat表应用

iptables filter表案例 介绍两个以后可能会用到的,关于iptables filter表案例 案例一、需求(将指定端口放行) 指定端口 80、21、22放行,且22要指定一个ip段 为了实现这个需求,我们要写一...

杉下
07/14
0
0
快速理解iptables入门教程

一、iptables安装 一般系统已经自带,没有安装请参照下面安装 (redhat系):Yum install iptables (debian系)Sudo apt-get install iptables iptables –version查看版本 iptables v1.4.14 即为...

独钓渔
2013/02/04
0
0
第十一章 netfilter/iptables全攻略

内容简介 防火墙的概述 iptables简介 iptables基础 iptables语法 iptables实例 案例详解 防火墙的简介 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的...

jims
2016/10/01
1
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
4
0
现场看路演了!

HiBlock
昨天
14
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部