扩展:

1. iptables应用在一个网段:

http://www.aminglinux.com/bbs/thread-177-1-1.html

2. sant,dnat,masquerade:   

http://www.aminglinux.com/bbs/thread-7255-1-1.html

3. iptables限制syn速率:

http://www.aminglinux.com/bbs/thread-985-1-1.html

10.15 iptables filter表小案例

iptables表小案例

1. 创建iptables.sh脚本:

[root@hao-001 ~]# vim /usr/local/sbin/iptables.sh

脚本内容添加:

#! /bin/bash

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

10.15 iptables filter表小案例;10.16—10.18 iptables nat_表应用_02

解释说明:

ipt="/usr/sbin/iptables" 定义一个环境变量(下面$ipt就等同于/usr/sbin/iptables的绝对路径了)

$ipt -F 清空之前规则(没有-t,默认是执行的filter)

$ipt -P INPUT DROP 定义策略 (INPUT策略 DROP掉)

$ipt -P OUTPUT ACCEPT 定义策略(OUTPUT策略 ACCEPT接受)

$ipt -P FORWARD ACCEPT 定义策略(FORWARD策略 ACCEPT接受)

$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 增加规则(RELATED状态,ESTABLISHED状态放行)

$ipt -A INPUT -s 192.168.223.0/24 -p tcp --dport 22 -j ACCEPT增加规则(192.168.223网段访问22端口的数据包放行)

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT增加规则(80端口数据包方行)

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT增加规则(21端口数据包放行)

2. 执行iptables.sh脚本:

[root@hao-001 ~]# sh /usr/local/sbin/iptables.sh

3. 查看iptables.sh规则:

[root@hao-001 ~]# iptables  -nvL

10.15 iptables filter表小案例;10.16—10.18 iptables nat_ nat_03

4. 恢复默认规则(重启了iptables服务,因为刚刚设定的规则没有保存到配置文件!)

[root@hao-001 ~]# service iptables restart

filter表小案例

1. 本机可以ping通外网别人ping不通本机(禁ping) :

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

2. 删除禁ping的规则:

[root@hao-001 ~]# iptables -D INPUT -p icmp --icmp-type 8 -j DROP

10.16 iptables nat表应用(上)

准备工作:

hao1A机器两块网卡ens33(192.168.223.128)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络(局域网)

hao2B机器只有网卡ens37(192.168.100.100),和A机器ens37可以通信互联。

需求1:让hao2B机器连接外网

hao1A机器操作:

hao1机器:编辑虚拟机设置——选中:网络适配器——添加:网络适配器——点击:下一步

10.15 iptables filter表小案例;10.16—10.18 iptables nat_iptables_05

保持默认:NAT模式——点击: 完成

10.15 iptables filter表小案例;10.16—10.18 iptables nat_iptables_07

选中:网络适配器 2——选择:LAN 区段——添加:自定义名称(内网交换机001)——确定

10.15 iptables filter表小案例;10.16—10.18 iptables nat_ nat_09

选中刚刚添加的新LAN段 ——确定

10.15 iptables filter表小案例;10.16—10.18 iptables nat_iptables_11

hao2B机器操作:

hao2机器:编辑虚拟机设置——选中:网络适配器——设备状态:启动时连接勾掉——点击:下一步

10.15 iptables filter表小案例;10.16—10.18 iptables nat_ nat_12

保持默认:NAT模式——点击: 完成

10.15 iptables filter表小案例;10.16—10.18 iptables nat_ nat_14

选中:网络适配器 2——选择:LAN 区段——选中:内网交换机001——确定

10.15 iptables filter表小案例;10.16—10.18 iptables nat_表应用_16

注意关掉,hao2B机器网络适配器——设备状态——启动时连接——勾选掉

确保:hao1适配器2hao2适配器2,LAN 区段同一段下!!!

1. 查看hao1A机器,新添加网卡名称

[root@hao-001 ~]# ifconfig10.15 iptables filter表小案例;10.16—10.18 iptables nat_表应用_17

2. 新网卡命令设置ip(临时生效,在Xshell上操作的)ifconfig ens37 ip/网段

(重启后会失效,永久生效去创建网卡配置文件,拷贝ens33文件重命名为ens37,把ip更改,mac地址删除)

[root@hao-001 ~]# ifconfig ens37 192.168.100.1/24

3. 查看hao2B机器,新添加的网卡名称

[root@hao-02 ~]# ifconfig

10.15 iptables filter表小案例;10.16—10.18 iptables nat_ nat_19

4. 新网卡命令设置ip(临时生效,在虚拟机上操作的)ifconfig ens37 ip/网段

(为甚么不在xshell上操作,因为hao2B机器的网络适配器没有启动,没法连接Windows下的xshell了)

[root@hao-02 ~]# ifconfig ens37 192.168.100.100/24

5. hao1A机器 ping hao2B机器设置的内网ip

[root@hao-001 ~]# ping 192.168.100.100

10.15 iptables filter表小案例;10.16—10.18 iptables nat_表应用_21

6. hao2B机器 ping hao1A机器设置的内网ip

(一定要确保,hao2B机器ens37网卡设定了192.168.100.100的ip,临时设定的很快就失效)

[root@hao-02 ~]# ping 192.168.100.1

10.15 iptables filter表小案例;10.16—10.18 iptables nat_表应用_23

10.17 iptables nat表应用(中)

7. hao1A机器,打开端口转发(给这个文件追加1)

(cat .../ip_forward文件默认查看的值是0没打开,打开为1。)

[root@hao-001 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward

[root@hao-001 ~]# cat /proc/sys/net/ipv4/ip_forward

10.15 iptables filter表小案例;10.16—10.18 iptables nat_ nat_25

8. hao1A机器,执行规则使192.168.100.0网段可以上网

[root@hao-001 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

查看nat表规则:

10.15 iptables filter表小案例;10.16—10.18 iptables nat_iptables_26

9. hao2B机器,命令设置网关

[root@hao-02 ~]# route add default gw 192.168.100.1

10. hao2B机器,配置文件中,设置DNS

[root@hao-02 ~]# vi /etc/resolv.conf

插入添加公共dns:

nameserver 119.29.29.29

10.15 iptables filter表小案例;10.16—10.18 iptables nat_iptables_28

11. hao2B机器,ping通了外网地址 ;ping通了hao1A机器ens33网卡ip

注意:一定要关闭了selinux防火墙和firewalld防火墙在做本实验!!!

[root@hao-02 ~]# ping www.baidu.com

[root@hao-02 ~]# ping 192.168.223.128

10.15 iptables filter表小案例;10.16—10.18 iptables nat_ nat_30

10.18 iptables nat表应用(下)

需求2:hao3C机器只能和hao1A机器通信;让hao3C机器可以直接连通hao2B机器22端口

1. hao1A机器,打开端口转发(给这个文件追加1)

(cat .../ip_forward文件默认查看的值是0没打开,打开为1。)

[root@hao-001 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward

2. 删掉hao1A机器,之前设定nat表上的规则 :

[root@hao-001 ~]# iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

3. hao1A机器,重新设定添加nat表的规则1(端口转发,针对进去的数据包) :

[root@hao-001 ~]# iptables -t nat -A PREROUTING -d 192.168.223.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

4. hao1A机器,重新设定添加nat表的规则2(针对回来的数据包) :

[root@hao-001 ~]# iptables -t nat  -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.223.128

5. hao2B机器,命令设置网关

[root@hao-02 ~]# route add default gw 192.168.100.1

6. 设置hao3 Xshell连接到hao2B机器

通过hao1机器外网ip指定端口,远程到hao2内网机器:

新建Xshell——名称:hao3——主机:hao1外网ip——端口号:1122(通往hao2机器的端口)

10.15 iptables filter表小案例;10.16—10.18 iptables nat_表应用_32

第一次登录的警告,接受并保存即可!

10.15 iptables filter表小案例;10.16—10.18 iptables nat_表应用_33

输入hao2B机器用户名密码,即可登录到A机器;

通过A机器外网映射的ip 1122端口连接到hao2B机器上!

10.15 iptables filter表小案例;10.16—10.18 iptables nat_表应用_35