linux如何禁用ip访问网络连接不上?

在Linux系统中,可以通过以下几种方法禁用特定IP地址的网络访问:

### 一、使用 `iptables` 命令

**添加拒绝规则**

使用 `iptables` 可以添加规则丢弃指定IP的数据包。例如,禁止IP `192.168.0.1` 访问:

```bash

sudo iptables -A INPUT -s 192.168.0.1 -j DROP

```

解释:

- `A INPUT`:将规则添加到INPUT链(处理入站连接)

- `-s 192.168.0.1`:指定源IP地址

- `-j DROP`:丢弃匹配的数据包

**保存规则**

为确保重启后规则生效,需保存配置:

```bash

sudo iptables-save > /etc/iptables/rules.v4

```

或使用 `iptables-persistent` 工具:

```bash

sudo netfilter-persistent save

```

### 二、使用 `ufw` 命令

**添加拒绝规则**

使用 `ufw` 简化命令行操作,例如:

```bash

sudo ufw deny from 192.168.0.1 to any port 22

```

解释:

- `deny`:拒绝连接

- `from 192.168.0.1`:指定源IP

- `to any port 22`:目标IP为任意地址且端口为SSH(22)

**启用 `ufw`**

确保 `ufw` 已启用:

```bash

sudo ufw enable

```

### 三、修改 `/etc/hosts.deny` 文件

**添加IP映射**

在 `/etc/hosts.deny` 中添加以下行:

```bash

192.168.0.1 sshd:all

```

解释:

- `192.168.0.1`:源IP地址

- `sshd:all`:禁止该IP访问SSH服务

**重启相关服务**

需重启 `xinetd` 服务使配置生效:

```bash

sudo service xinetd restart

```

*注意:某些系统需使用 `systemctl restart xinetd` 或 `firewalld` 命令*

### 四、使用 `firewalld`(适用于CentOS/RHEL)

**添加拒绝规则**

使用 `firewalld` 命令:

```bash

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.1" port protocol="tcp" port="22" reject'

```

解释:

- `--permanent`:使规则持久化

- `--add-rich-rule`:添加自定义规则

- 参数与 `iptables` 类似

**重新加载防火墙**

执行:

```bash

sudo firewall-cmd --reload

```

### 注意事项

**权限要求** :上述命令需以 `{$gdata[title]}root` 或 `sudo` 身份执行

**服务依赖** :修改 `/etc/hosts.deny` 后需重启 `xinetd`(或 `firewalld`),否则规则不生效

**IP范围** :若需屏蔽IP段(如 `192.168.0.0/24`),可使用 CIDR 表示法(如 `192.168.0.0/24`)

**临时解决方案** :使用 `iptables` 时,规则需手动保存,系统重启后会丢失

通过以上方法,可灵活选择适合的防火墙工具或配置方式,实现IP访问控制。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。