扩展:
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
解释说明:
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
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机器:编辑虚拟机设置——选中:网络适配器——添加:网络适配器——点击:下一步
保持默认:NAT模式——点击: 完成
选中:网络适配器 2——选择:LAN 区段——添加:自定义名称(内网交换机001)——确定
选中刚刚添加的新LAN段 ——确定
hao2B机器操作:
hao2机器:编辑虚拟机设置——选中:网络适配器——设备状态:启动时连接勾掉——点击:下一步
保持默认:NAT模式——点击: 完成
选中:网络适配器 2——选择:LAN 区段——选中:内网交换机001——确定
注意关掉,hao2B机器网络适配器——设备状态——启动时连接——勾选掉
确保:hao1适配器2和hao2适配器2,LAN 区段在同一段下!!!
1. 查看hao1A机器,新添加的网卡名称:
[root@hao-001 ~]# ifconfig
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
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
6. hao2B机器 ping hao1A机器设置的内网ip
(一定要确保,hao2B机器ens37网卡设定了192.168.100.100的ip,临时设定的很快就失效)
[root@hao-02 ~]# ping 192.168.100.1
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
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表规则:
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
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.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机器的端口)
第一次登录的警告,接受并保存即可!
输入hao2B机器用户名密码,即可登录到A机器;
通过A机器外网映射的ip 1122端口连接到hao2B机器上!