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

iptables放行指定ip 其他drop iptables放行ip段_python

icmp 示例

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

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

iptables放行指定ip 其他drop iptables放行ip段_外网_02

 

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

iptables放行指定ip 其他drop iptables放行ip段_网络_03

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

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

iptables放行指定ip 其他drop iptables放行ip段_网络_04

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

iptables放行指定ip 其他drop iptables放行ip段_网络_05

 

需求1的流程

 

启动AB 两机器

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

iptables放行指定ip 其他drop iptables放行ip段_IP_06

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

语法 ifconfig ens37 IP/端口

给A机器ens37 设置为192.168.100.1

iptables放行指定ip 其他drop iptables放行ip段_运维_07

iptables放行指定ip 其他drop iptables放行ip段_IP_08

给B机器设置ip 192.168.100.100

iptables放行指定ip 其他drop iptables放行ip段_网络_09

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

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

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

iptables放行指定ip 其他drop iptables放行ip段_IP_10

之后通过命令

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

iptables放行指定ip 其他drop iptables放行ip段_网络_11

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

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

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

iptables放行指定ip 其他drop iptables放行ip段_运维_12

iptables放行指定ip 其他drop iptables放行ip段_外网_13

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

可以通过 route 命令设置网关

route -n 查看当前网关

route add default gw 网关IP

iptables放行指定ip 其他drop iptables放行ip段_运维_14

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

iptables放行指定ip 其他drop iptables放行ip段_网络_15

我们设置下DNS 

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

iptables放行指定ip 其他drop iptables放行ip段_IP_16

iptables放行指定ip 其他drop iptables放行ip段_网络_17

iptables放行指定ip 其他drop iptables放行ip段_外网_18

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

iptables放行指定ip 其他drop iptables放行ip段_网络_19

第二条

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

iptables放行指定ip 其他drop iptables放行ip段_网络_20

 

给B机器要设置网关

iptables放行指定ip 其他drop iptables放行ip段_外网_21

之后远程连接B机器,

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

iptables放行指定ip 其他drop iptables放行ip段_网络_22

iptables放行指定ip 其他drop iptables放行ip段_运维_23

也是可以跟外网通信的。

iptables放行指定ip 其他drop iptables放行ip段_IP_24

可以通过w查看源IP

iptables放行指定ip 其他drop iptables放行ip段_python_25