如何在 Linux 中获取 IPv6 IP 地址

如何在 Linux 中获取 IPv6 IP 地址

我有一台 Linux 服务器,我想通过一个命令行找到主 IPv6 地址。

我目前的命令:

$ ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'

这表明:

2001:410:0:39:221:28ff:fe46:eef4
fe80::221:28ff:fe46:eef4

但我想要仅发生一次,这样输出结果为:

2001:410:0:39:221:28ff:fe46:eef4

答案1

ip -6 addr

将显示您的 IPv6 地址。

答案2

/sbin/ip -6 addr | grep inet6 | awk -F '[ \t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80

输出/sbin/ip -6 addr | grep inet6看起来是这样的:

inet6 ::1/128 scope host 
inet6 2001:123:456:55f::1/64 scope global 
inet6 fe80::62eb:69ff:fed2:d2a6/64 scope link 

awk -F '[ \t]+|/' '{print $3}'将每行的分隔符设置为一个或多个空格或正斜杠。我们需要的部分是 $3。

grep -v ^::1 | grep -v ^fe80排除以::1或开头的任何行fe80

答案3

要仅获取 IPv6 地址,您可以使用该ip addr命令并-6仅使用 IPv6 地址进行过滤。

ip -6 addr

如果您想指定网络适配器,您可以附加show dev eth0eth0应该被您的网络适配器替换”的内容。

ip -6 addr show dev [eth0]

由于您只查找外部 IP 地址,因此您应该添加一个scope global

ip -6 addr show dev [eth0] scope global

最后你把它输入到你的sed命令中。

ip -6 addr show dev [eth0] scope global | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'

答案4

使用以下命令在 Linux 上查看您的 IP 地址:

ifconfig

通常,Ipv6 地址如下所示 2001:5c0:9168::/48。如果您遇到任何 IP 冲突,请按照以下步骤重新设置 IP 地址:

  1. 要分配 IPv6 IP,请确保已安装 iproute2 工具。
  2. 使用它们,让我们开始分配您的 IP。
  3. 确保ipv6模块是否安装。

然后使用以下命令添加新的ip:

ip -f inet6 addr add 2001:5c0:9168::2/64 dev eth0

之后,通过添加默认 IP

ip -f inet6 ro add default via 2001:5c0:9168::1 dev eth0

完成安装后,只需重新配置/重新启动支持 IPv6 的服务,如 Apache、SSH 等。

相关内容