昨天 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 是暂时的,但内核引导选项是永久的,并且是最好的方法。