本文环境:Red Hat Enterprise Linux release 8.1 (Ootpa)
因为最近在一台服务器上安装Nginx后启动,发现有报错:nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
这个一看就很容易猜出与OS不支持ipv6有关系,于是准备查看OS可能与ipv6禁用相关的配置
首先想到了内核启动选项时,是否有禁用ipv6,于是查看/boot/grub2/grubenv配置文件
[root@localhost QQ-5201351]# cat /boot/grub2/grubenv # GRUB Environment Block kernelopts=root=/dev/mapper/vgEBS-lvRoot ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto ipv6.disable=1 audit=1 boot_success=1 saved_entry=ec237b1e63f562b6d6088412bcd4a50f-4.18.0-147.el8.x86_64 boot_indeterminate=0 #################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### [root@localhost QQ-5201351]#
果然看到关于kernelopts,内核选项中有一条ipv6.disable=1,于是将这里修改成0,即ipv6.disable=0
然后重启OS,就可以支持ipv6了 , 另外补充一点,一般修改上面一处就可以了,但其实看到OS还有一处配置文件也有相关的配置
即 /boot/grub2/grub.cfg 文件,也可以将这个文件的ipv6.disable=1也修改成ipv6.disable=0
[root@localhost QQ-5201351]# grep ipv6 /boot/grub2/grub.cfg set default_kernelopts="root=/dev/mapper/vgEBS-lvRoot ro console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto ipv6.disable=1 audit=1 " [root@localhost QQ-5201351]#
不过笔者在测试时,发现这里不修改也是不影响的,生效的还是/boot/grub2/grubenv,只是推荐也一起修改了
修改以上两个配置文件,都只需要重启OS就可以生效了~
2023-02-19 再次修正,更新,原因因为官网是不推荐直接修改/boot/grub2/grubenv 文件的,修改后,会导致一些问题
如下次升级内核时,执行某些脚本时,会有报错,grub2-editenv: error: environment block too small.
重启也不会应用新内核,这个问题将在笔者另一篇文章<<关于Linux升级内核时报错-grub2-editenv: error: environment block too small.>>中介绍,及解决方法
因此本文,主要只在于开启ipv6,正确的做法步骤应该如下
1、直接手动修改 /etc/default/grub 这个文件,将GRUB_CMDLINE_LINUX=选项中的ipv6.disable=值设置为0
2、然后执行如下命令,会重新生成 /boot/grub2/grubenv 文件
grub2-mkconfig –o /boot/grub2/grub.cfg
3、最后重启OS就能生效了~
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17122078.html
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!