检查Linux中是否启用ipv6的6种简单方法
在本教程中,将介绍不同的方法来检查是否在Linux中启用或者禁用了IPv6.
检查是否启用或者禁用了IPv6
在大多数Linux发行版中,默认情况下IPv6处于启用状态。
尽管可能有人在服务器上禁用了IPv6,所以我们必须熟悉在Linux服务器上检查IPv6状态的方法和命令。
我们将在后面的部分中讨论的命令输出将根据环境而有所不同。
假设我们已使用内核启动项或者GRUB2禁用了IPv6,则可能会得到大多数命令的空输出。
这意味着IPv6模块本身已在内核中卸载,因此处于禁用状态。
方法1:检查IPv6模块状态
我们可以检查/sys/module/ipv6/parameters/disable文件的内容,以获取Linux服务器上的IPv6状态。
如果IPv6处于启用状态,则输出将为0
# cat /sys/module/ipv6/parameters/disable 0
如果IPv6处于禁用状态,则输出将为1
# cat /sys/module/ipv6/parameters/disable 1
方法2:使用sysctl
在这种方法中,我们将使用sysctl
检查IPv6的状态。
如果通过sysctl禁用了IPv6,但仍处于禁用状态,则输出将包含1的特定条目:
# sysctl -a 2>/dev/null | grep disable_ipv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 0 net.ipv6.conf.eth1.disable_ipv6 = 0 net.ipv6.conf.lo.disable_ipv6 = 0
如果通过GRUB2或者内核引导条目禁用了IPv6,则"输出将为空",这再次意味着IPv6处于禁用状态:
# sysctl -a 2>/dev/null | grep disable_ipv6
如果IPv6处于启用状态,则输出中的所有参数的值都将为0
sysctl输出以检查IPv6状态
方法3:检查是否将IPv6地址分配给任何接口
默认情况下,将为Linux中的每个可用接口分配一个IPv6地址。
即使我们没有IPv6配置,每个接口也会获得一个全局地址,例如:2001 :: 1/64或者链接本地地址fe80 :: x/64.
如果IPv6处于启用状态,我们将在控制台上获得一些输出,其中接口将根据环境具有全局地址或者链接本地地址:
检查是否通过ip命令启用了IPv6
如果IPv6处于禁用状态,那么我们将得到一个空输出
# ip -6 addr
重要的提示:
方法1-3是"最可靠的方法",用于检查是否启用或者禁用了IPv6. 在其余部分中,我将共享命令以检查IPv6套接字地址。
如果有人使用sysctl禁用了IPv6,并且由于仍在加载IPv6模块,系统服务和进程仍会继续绑定到inet6套接字,则是可能的。
方法4:使用netstat检查任何IPv6套接字
我们可以在tcp6或者udp6上查找使用IPv6套接字的任何服务,使用netstat命令检查此服务的方法之一。
如果IPv6处于启用状态,则很可能会找到一些活动套接字:
使用netstat的ipv6套接字状态
如果IPv6处于禁用状态,则很可能会得到一个空输出
# netstat -tunlp | grep -iE 'udp6|tcp6'
其中
-t represents all TCP connections -u represents all UDP connections -n means show numerical addresses instead of trying to determine symbolic host, port or user names -l is to show only listening sockets -p is to show the PID and name of the program to which each socket belongs
方法5:使用ss检查侦听IPv6套接字
ss是另一个研究套接字的实用程序。
它是netstat
命令的替代方法,它可以显示比其他工具更多的TCP和状态信息。
如果IPv6处于启用状态,那么我们将获得绑定到IPv6套接字的服务和进程的列表
ss命令输出以检查IPv6状态
如果IPv6处于禁用状态,则输出很可能为空:
# ss -6 -pan Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
如我们所见,我们没有服务或者进程在IPv6套接字上侦听,因此IPv6应该处于禁用状态
其中
-p is used to show process using socket -a is to display both listening and non-listening (for TCP this means established connections) sockets. -n means do not try to resolve service names -6 is to display only IP version 6 sockets (alias for -f inet6)
方法6:使用lsof检查侦听地址
lsof用于检查打开文件的列表,但它也可以帮助我们确定是否有任何文件正在使用IPv4或者IPv6地址。
如果IPv6处于启用状态,则应该使用IPv6地址获取一些输出,其中包含文件列表
使用ipv6地址的文件输出lsof命令
如果IPv6处于禁用状态,则同一命令的输出将为空:
# lsof -a -i6