本文共 3364 字,大约阅读时间需要 11 分钟。
需求:把80端口、22端口、21端口都放行,其中22端口指定IP段放行。
用一个脚本来实现这个需求。
#!/bin/bash
ipt="/usr/sbin/iptables" #定义变量,执行命令时写命令的绝对路径。$ipt -F #清空filter表之前的规则$ipt -P INPUT DROP #定义INPUT默认策略$ipt -P OUTPUT ACCEPT #定义OUTPUT默认策略$ipt -P FORWARD ACCEPT #定义FORWAD默认策略$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #指定状态放行$ipt -A INPUT -s 192.168.159.0/24 -p tcp --dport 22 -j ACCEPT #指定ip和端口放行$ipt -A INPUT -p tcp --dport 80 -j ACCEPT #指定端口放行$ipt -A INPUT -p tcp --dport 21 -j ACCEPT #指定端口放行使用脚本实现需求是因为开始就将INPUT链的默认策略改成了DROP,远程就会断开。
[root@localhost ~]# iptables -nvLChain INPUT (policy DROP 0 packets, 0 bytes)pkts bytes target prot opt in out source destination 57 4188 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED0 0 ACCEPT tcp -- * * 192.168.159.0/24 0.0.0.0/0 tcp dpt:220 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:800 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 39 packets, 3644 bytes)pkts bytes target prot opt in out source destination
使用iptables -nvL命令查看filter表的策略,刚才使用脚本添加的策略已经添加成功。
禁止外面的机器ping本机
iptables -I INPUT -p icmp --icmp-type 8 -j DROP
禁ping不代表不能访问,只是ping不同而已。
A设备上需要打开路由转发
[root@centos-01 ~]# cat /proc/sys/net/ipv4/ip_forward
0[root@centos-01 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward[root@centos-01 ~]# cat /proc/sys/net/ipv4/ip_forward1文件内容默认为0,表示没有开启内核转发。改成1就打开了端口转发。
在nat表POSTROUTING链上增加一条规则
[root@centos-01 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
[root@centos-01 ~]# iptables -t nat -nvLChain PREROUTING (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destinationChain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 4 packets, 304 bytes)
pkts bytes target prot opt in out source destinationChain POSTROUTING (policy ACCEPT 4 packets, 304 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机器可以连通外网,但是外网机器无法访问B机器,A机器的作用就类似于一个路由器
A设备打开路由转发
[root@centos-01 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
更改内核设置,打开路由转发功能,默认值是0.设置成1则打开。
在A设备的nat表中增加两条规则(增加之前需要清空nat表中的规则)
[root@centos-01 ~]# iptables -t nat -A PREROUTING -d 192.168.159.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
[root@centos-01 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.159.128完成之后,B可以连接外网,还可以使用远程通过连接A的1122端口来进行远程连接。
转载于:https://blog.51cto.com/754599082/2046254