Rocky Linux 禁用 Ipv6 的设置

Published on: May 1, 2022 | Reading Time: 1 min | Last Modified: May 1, 2022

rocky-linux
ipv6

昨天 update 了一下服务器,想通过部署在上面的的 frps 内网穿透服务连接家里路由器的时候发现登录页面出错。随即查看 frps 是不是未运行,结果一切正常正常。于是查看 frps 监听的端口是否未在防火墙设置打开,结果也是打开的,没毛病呀。 于是查看端口占用:

netstat -ntlp

原来 fprs 只监听了 IPv6 地址,更新 frps 版本还是一样。GitHub 上 frp 的项目 Issues 里也没有找到有用的回答。于是 Google 大法开启,Search"rocky disable ipv6",还真找到了解决方法。

有效的答案是针对 CentOS 8 禁用 IPv6 的设置方法,由于 Rocky 就是基于 CentOS 所以这个方法也对 Rocky 适用。

ip a | grep inet6 #检查服务器是否启用了 IPv6

输出结果是肯定的,显示 IPv6 已开启

具体的禁用 IPv6 方法有两种

  • 使用 sysctl 命令禁用 IPv6 -此方法适用于临时禁用IPv6
  • 使用内核引导选项禁用 IPv6 -这是禁用IPv6的最佳方法

第一种方法-使用 sysctl 命令禁用 IPv6

创建一个新的 sysctl 配置文件 /etc/sysctl.d/70-ipv6.conf

vi /etc/sysctl.d/70-ipv6.conf

在配置文件中添加以下两行并保存

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

然后使用以下命令禁用 IPv6

sysctl --load /etc/sysctl.d/70-ipv6.conf

验证 IPv6 是否已被禁用

ip a | grep inet6

窗口未返回任何 IPv6 有效的信息,说明 IPv6 已被禁用

但这时如果重启系统,服务器依然会使用 IPv6。这是因为 Rocky Linux 和 CentOS 8 一样默认使用 “Network Manager” 网络管理器。

如果要完全禁用 IPv6 请使用以下命令

nmcli connection modify interface ipv6.method ignore

然后重启

sudo reboot

第二种方法-使用内核引导选项禁用 IPv6

打开默认的 GRUB 配置文件 /etc/default/grub

vi /etc/default/grub

在 GRUB 配置文件末尾加入下面一行并保存

GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX ipv6.disable=1"

然后更新 GRUB CFG 文件,输入以下命令查找 GRUB 文件

ls -lh /etc/grub*.cfg

你会看到两 个GRUB CFG 文件路径:/etc/grub2.cfg -> ../boot/grub2/grub.cfg

输入以下命令创建新的 GRUB 配置文件并将其保存到 /etc/grub2.cfg

grub2-mkconfig -o /etc/grub2.cfg

然后输入以下命令来创建一个新的 GRUB 配置文件并将其保存到 /boot/grub2/grub.cfg

grub2-mkconfig -o /boot/grub2/grub.cfg

重启服务器,再次验证 IPv6 是否禁用

ip a | grep inet6

终端未反馈任何内容表示 IPv6 已成功被禁用

最后来看一下 frps 的端口监听

netstat -ntlp

OK,现在 frps 就只监听 IPv4 端口了,成功!

注:使用 sysctl 禁用 IPv6 是暂时的,但内核引导选项是永久的,并且是最好的方法。