应用1
环境:
A机器两块网卡ens33(192.168.8.125)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
准备工作:
- 两台虚拟机
- A机器添加一块网卡ens37,ens37的网络连接方式选择‘LAN区段模式’(内网交换机连接,该模式下Windows无法与该客户端连接),开机后并设定IP为192.168.100.1
- B机器关闭原有网卡连接,新增网卡ens37,开机后设定IP为192.168.100.100(网络连接模式选择LAN区段,并和A机器中的ens37网卡选择相同区段)
设置ens37的IP:
方法1:直接在命令行使用ifconfig命令
[root@localhost ~]# ifconfig ens37 192.168.100.1/24
说明: 该方法只是临时设定IP,重启后会丢失。
方法2: 复制ens33的配置文件,然后在配置文件里进行设置!
需求:
需求1: 可以让B机器连接外网
- 步骤一:A机器打开路由转发
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
说明:该命令是更改内核设置,打开路由转发功能,默认值是0.
- 步骤二:在A机器的nat表中增加一条规则
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
[root@localhost ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * ens33 192.168.100.0/24 0.0.0.0/0
说明: -o 选项后面跟设备名称,表示出口网卡,MASQUERADE是伪装、冒充的意思。
- 步骤三:为B设置网关为A机器ens37的IP:
[root@localhost ~]# route add default gw 192.168.100.1
mark
- 步骤四:配置DNS(编辑DNS配置文件)
[root@localhost ~]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 119.29.29.29 //然后使用ping命令检测
说明: 此时B机器可以连通外网,但是外网机器无法访问B机器,A机器的作用就类似于一个路由器!
需求2:让C机器可以直接连通B机器的22端口
- 步骤一:A机器打开路由转发
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
说明:该命令是更改内核设置,打开路由转发功能,默认值是0.
- 步骤二:在A机器的nat表中增加2条规则(执行该步骤前先清除nat表原有规则)
规则1:
[root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.8.125 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
规则2:
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.8.125
- 步骤三:为B设置网关为A机器ens37的IP:
[root@localhost ~]# route add default gw 192.168.100.1
应用2 :iptables限制syn速度
原理: 每5s内tcp三次握手大于20次的属于不正常访问。
[root@localhost ~]# iptables -A INPUT -s ! 192.168.0.0/255.255.255.0 -d 192.168.8.125 -p tcp -m tcp --dport 80 -m state --state NEW -m recent --set --name httpuser --rsource
[root@localhost ~]# iptables -A INPUT -m recent --update --seconds 5 --hitcount 20 --name httpuser --rsource -j DROP
说明: 其中192.168.0.0/255.255.255.0 为不受限制的网段,192.168.8.125为本机IP。该iptables策略,可有效预防syn攻击。
应用3
- iptables针对一个网段设置规则:
[root@localhost ~]# iptables -I INPUT -m iprange --src-range 61.4.176.0-61.4.191.255 -j DROP
iptables中DNAT、SNAT和MASQUERADE
- DNAT(Destination Network Address Translation,目的地址转换) 通常被叫做目的映射。
- SNAT(Source Network Address Translation,源地址转换)通常被叫做源映射。
iptables中DNAT和SNAT工作原理:
在任何一个IP数据包中,都会有Source IP Address与Destination IP
Address这两个字段,数据包所经过的路由器也是根据这两个字段是判定数据包是由什么地方发过来的,它要将数据包发到什么地方去。而iptables的DNAT与SNAT就是根据这个原理,对Source
IP Address与Destination IP Address进行修改。