一、配置(通过ip进行ping)
1.创建复用链
iptables -t nat -N LETMEIN
2.创建端口复用将流量转发到22端口上
iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22
3.开启开关,如果接收到一个长为 1139 的 ICMP 包,则将来源 IP 添加到加为letmein的列表中
iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1139 -m recent --set --name letmein --rsource -j ACCEPT
4.关闭开关,如果接收到一个长为 1140 的 ICMP 包,则将来源 IP 从 letmein 列表中去掉
iptables -t nat -A PREROUTING -p icmp --icmp-type 8 -m length --length 1140 -m recent --name letmein --remove -j ACCEPT
5. 如果发现 SYN 包的来源 IP 处于 letmein 列表中,将跳转到 LETMEIN 链进行处理,有效时间为 3600 秒
iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN
含义:如果新来ip在我们之前添加的列表中,我们就会转到自定义链,自定义链就会将我们流量转至22端口上
6.查看
总结:相当于80和22为同一个端口
二、使用ubuntu来做测试
解释:
开启复用 ping -c 1 -s 1111 192.168.170.136
向目标发送一个长度为 1111 的 ICMP 数据包(加上包头28,总长度实际为1139)
关闭复用 ping -c 1 -s 1112 192.168.170.136 向目标发送一个长度为 1112 的 ICMP 数据包(加上包头 28,总长度实际为 1140)