这里写目录标题
- 前言
- 一、FirewalldIP端口限制
- 1.1 确认启动状态
- 1.2 启动Firewalld
- 1.3 查看当前连接到Nacos的IP
- 1.4 添加访问规则
- 1.5 重新加载配置
- 1.6 查看当前活动的规则列表
- 1.7 移除某个规则
- 二、Firewalld 开放端口
- 2.1 开放 6379端口
- 2.2 重新加载防火墙
- 2.3 验证规则
- 三、Iptables限制ip端口(未验证)
- 3.1 添加规则允许特定IP访问Nacos服务:
- 3.2 保存 iptables 规则
- 3.3 解决浏览器无法访问Nacos页面的问题
- 总结
前言
在服务器管理中,防火墙是保护系统安全的重要工具。通常,我们可能会关闭firewalld,但在某些情况下,我们需要利用firewalld或iptables来限制IP请求。本文将详细介绍如何使用firewalld和iptables来实现IP端口限制与开放。
一、FirewalldIP端口限制
1.1 确认启动状态
首先,我们需要确认firewalld的启动状态
sudo systemctl status firewalld
1.2 启动Firewalld
如果firewalld未启动,执行以下命令启动:
sudo systemctl start firewalld
1.3 查看当前连接到Nacos的IP
以Nacos为例,查看当前连接到Nacos的IP:
netstat -antp | grep ':8848' | awk '{print $5}' | cut -d':' -f1 | sort | uniq
此处查询的ip仅供参考,可作为梳理后的补充
1.4 添加访问规则
添加访问规则,允许特定IP访问Nacos服务:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.1.1.3" port port=8848 protocol=tcp accept'
其中,address是需要连接到Nacos的服务器的IP(内网/弹性都要加),port指定Nacos端口。多个IP可多次执行上面代码。
1.5 重新加载配置
添加规则后,重新加载配置:
sudo firewall-cmd --reload
1.6 查看当前活动的规则列表
查看当前活动的规则列表:
sudo firewall-cmd --list-all
输出示例:
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: cockpit dhcpv6-client mdns ssh
ports: 8848/tcp 6379/tcp 8012/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family=“ipv4” source address=“172.1.1.1” port port=“8848” protocol=“tcp” accept
rule family=“ipv4” source address=“172.1.1.2” port port=“8848” protocol=“tcp” accept
rule family=“ipv4” source address=“172.1.1.3” port port=“8848” protocol=“tcp” accept
rule family=“ipv4” source address=“172.1.1.4” port port=“8848” protocol=“tcp” accept
1.7 移除某个规则
1.查看当前的rich rules
sudo firewall-cmd --list-rich-rules
- 移除 rich rule
sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.1.1.4" port port="8848" protocol="tcp" accept'
- 重新加载防火墙
sudo firewall-cmd --reload
- 验证规则是否已移除
sudo firewall-cmd --list-rich-rules
二、Firewalld 开放端口
上一节是针对ip开放端口,那么如何直接开放端口,所有ip都可访问?
2.1 开放 6379端口
sudo firewall-cmd --permanent --add-port=6379/tcp
2.2 重新加载防火墙
添加完规则后,需要重新加载防火墙以使更改生效:
sudo firewall-cmd --reload
2.3 验证规则
您可以通过以下命令来验证当前的防火墙规则,确保 Redis 的端口已经被成功开放:
sudo firewall-cmd --list-all
三、Iptables限制ip端口(未验证)
3.1 添加规则允许特定IP访问Nacos服务:
sudo iptables -A INPUT -p tcp -s 172.16.17.33 --dport 8848 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 8848 -s 172.16.61.83 -j ACCEPT
3.2 保存 iptables 规则
Ubuntu/Debian:
sudo iptables-save > /etc/iptables.up.rules
CentOS/RHEL:
sudo service iptables save
3.3 解决浏览器无法访问Nacos页面的问题
添加完规则之后,可能浏览器依然无法访问Nacos页面,并且对应服务器可能ping通,但curl无法访问。可能是因为有一条规则导致的,去掉后可以正常访问。
5 REJECT all – 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
总结
在服务器管理中,梳理清楚当前服务器有哪些需要对外访问的服务非常重要。类似1.3中查看连接IP并不全面,因此需要结合实际情况进行规则配置。通过firewalld和iptables,我们可以灵活地控制IP端口的访问权限,从而提升服务器的安全性。