博客园  :: 首页  :: 管理

关于Linux从内核启动选项中开启对ipv6的支持

Posted on 2023-02-15 11:09  520_1351  阅读(724)  评论(0编辑  收藏  举报

本文环境: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