检查Linux中是否启用ipv6的6种简单方法

时间:2020-01-09 10:41:18  来源:igfitidea点击:

在本教程中,将介绍不同的方法来检查是否在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