七周四次课(11月30日) 10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用...

10.15 iptables filter表小案例

 

iptables小案例

需求

把80端口,22端口,21端口放行。但是22端口指定IP段访问

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

#!/bin/bash

ipt="/usr/sbin/iptables"  定义变量,目的为了以后加载它

$ipt -F    :首先清空规则

$ipt -P INPUT DROP  : 定义策略行为       DROP 阻断

$ipt -P OUTPUT ACCEPT :定义策略行为  ACCEPT 放行

$ipt -P FORWARD ACCEPT :定义策略行为  ACCEPT  放行

加入新规则

ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT     加该条命令是为了通信更顺畅

指定状态,针对这些状态放行。ESTABLISHED=保持连接 RELATED=两个机器通信完,还继续保持一些额外的通信。

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  放行指定端口

163447_YCAg_3708811.png

icmp 示例

icmp  会产生一个效果,ping外面的网络会通,但是ping本机不通,只是禁ping。

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

163452_37xj_3708811.png

 

10.16 iptables nat表应用(上)(中)(下)

nat表应用

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

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

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

A上执行命令

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

B机器上设置网关为 192.168.100.1

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

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

A机器上执行命令

iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to192.168.100.100:22

A机器上执行命令

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

B机器上设置网关为192.168.100.1

虚拟机上操作

有两个虚拟机

在虚拟机A上先添加一块网卡,默认选项

163503_sTG0_3708811.png

然后在新添加网卡的右侧选择LAN 区段。

 LAN 相当于把网卡连到内网交换机上去,是真机连不上的。

163508_Y3Hb_3708811.png

在虚拟机B上也要添加一块网卡,把本来的禁用掉。然后在选择LAN的时候要选择同一个区段

163512_EHEy_3708811.png

 

需求1的流程

 

启动AB 两机器

查看A机器 给新增加的网卡增加ip

163516_Sz9S_3708811.png

可以通过ifconfig 命令来手动命令直接设置,但是重启就没有了。如果要永久 就要更改配置文件新创建一下

语法 ifconfig ens37 IP/端口

给A机器ens37 设置为192.168.100.1

163521_eu66_3708811.png

163525_Rymb_3708811.png

给B机器设置ip 192.168.100.100

163531_JKBe_3708811.png

之后互相ping一下。ping通,说明准备工作完成了。B机器处于不能连接外网。A机器处于可以连接外网

之后把A机器 打开路由转发,改下内核配置

/proc/sys/net/ipv4/ip_forward  默认是0 关闭状态

163535_2fJS_3708811.png

之后通过命令

echo "1">/proc/sys/net/ipv4/ip_forward 启动路由转发

163541_fcUp_3708811.png

之后在A机器上增加一条natfilter规则,有了这条规则就可以实现上网了

iptables -t nat -A POSTROUTING -S 192.168.100.0/24 -o ens33 -j MASQUERADE

就是想让100.0 IP 可以上网,做一个伪装

163715_9orf_3708811.png

163720_PpPE_3708811.png

之后在B机器上做一个网关为,192.168.100.1

可以通过 route 命令设置网关

route -n 查看当前网关

route add default gw 网关IP

163736_iDP9_3708811.png

之后B机器去ping A机器连接外网的网卡 192.168.133.130。发现能通,就意味着B机器可以跟外网通信了。

163746_HQXf_3708811.png

我们设置下DNS 

编辑/etc/resolv.conf  能ping通,就说明可以上外网了。

163755_ANW2_3708811.png

163757_2YNl_3708811.png

163800_2Ms5_3708811.png

但是其他机器还是连不上B机器。只能通过A机器连B机器。等于A机器起到一个路由器的功能

 

需求2 流程

通过A机器跳转到B机器。 端口映射 

把100.100的端口映射出来,映射成其它的端口

第一步 打开A机器的路由转发功能

echo "1">/proc/sys/net/ipv4/ip_forward 启动路由转发

给网卡增加IP 已有可忽略

增加两条规则

第一条

出去进入B机器的包

iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100

 DNAT 转发行为  进入到 192.168.133.130/1122 的数据包 转发到 192.168.100.100/22 

163812_MDKb_3708811.png

第二条

B机器返回A机器的包

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

把B机器192.168.100.100发出的包伪装由 192.168.133.130 ip发出  因为Windows源ip只识别与它可以通信的ip

163815_u3ue_3708811.png

 

给B机器要设置网关

163819_DPvi_3708811.png

之后远程连接B机器,

写的IP 需要A机器的IP 端口也是

163822_Vwsz_3708811.png

163827_rtOv_3708811.png

也是可以跟外网通信的。

163829_nUWi_3708811.png

可以通过w查看源IP

163832_KTj6_3708811.png

转载于:https://my.oschina.net/u/3708811/blog/1582251

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值