您的位置:首页 > 其它

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

2017-11-30 00:00 519 查看
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 放行指定端口



icmp 示例

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

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



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上先添加一块网卡,默认选项



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

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



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



需求1的流程

启动AB 两机器

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



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

语法 ifconfig ens37 IP/端口

给A机器ens37 设置为192.168.100.1





给B机器设置ip 192.168.100.100



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

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

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



之后通过命令

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



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

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

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





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

可以通过 route 命令设置网关

route -n 查看当前网关

route add default gw 网关IP



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



我们设置下DNS

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







但是其他机器还是连不上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



第二条

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



给B机器要设置网关



之后远程连接B机器,

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





也是可以跟外网通信的。



可以通过w查看源IP

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐