Linux指定IP访问端口
时间: 2025-06-27 09:18:22 浏览: 14
### 配置Linux防火墙规则
为了实现仅允许特定IP地址访问某个端口,在Linux中可以利用`firewalld`或`iptables`工具来配置相应的防火墙规则。
#### 使用Firewalld管理防火墙规则
对于现代版本的CentOS或RHEL系统,默认采用的是`firewalld`作为动态管理防火墙的服务。可以通过以下命令操作:
- **查询当前已开放的端口**
```bash
firewall-cmd --zone=public --list-ports
```
此命令用于显示公共区域下所有被放行的TCP/UDP端口号[^1]。
- **添加新规则以允许来自特定IP对指定端口的访问**
假设目标是让IP `46.166.150.22`能够连接到本地机器上的HTTP服务(即80号端口),则应执行如下指令:
```bash
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="46.166.150.22" port protocol="tcp" port="80" accept'
```
上述命令中的`--permanent`参数表示永久生效;而rich rule语法定义了一个更精细控制条件下的例外情况——当源地址匹配给定值时才接受该请求[^3]。
完成以上设置之后,记得重启firewalld使更改立即起效:
```bash
sudo systemctl restart firewalld
```
#### 利用Iptables设定访问权限
另一种方式则是直接编辑iptables链表里的条目达成目的。比如想要限定仅有单一主机能触及数据库监听器(如Oracle DB使用的1521/tcp),可参照下面的例子编写脚本片段并加载至内核空间:
```bash
# 清除现有策略
sudo iptables -F INPUT
# 默认拒绝一切入站尝试
sudo iptables -P INPUT DROP
# 接受回环接口通信以及已经建立好的会话包交换
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 特许某固定公网IPv4节点向内部资源发起针对1521端口的数据传输活动
sudo iptables -A INPUT -p tcp -s 46.166.150.22 --dport 1521 -j ACCEPT
# 对于其余未特别指明的情况一律拦截掉
sudo iptables -A INPUT -j REJECT
```
这段代码首先清除了INPUT链中原有的全部项目(-F选项的作用),接着设定了默认动作(POLICY)为丢弃(DROP).随后几行分别处理了自环设备(lo interface)、已有连接状态跟踪(conntrack module)以及特批路径之外的所有输入型数据报文[-4].
最后一步是要保存这些改动以便持久化存储下来供下次引导时自动恢复应用:
```bash
sudo service iptables save
```
通过这种方式也可以达到相同的效果,不过相比起来firewalld提供了更加友好直观的操作界面和更为灵活的功能特性集.
阅读全文
相关推荐
















