我有一台 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 eth0
“eth0
应该被您的网络适配器替换”的内容。
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 地址:
- 要分配 IPv6 IP,请确保已安装 iproute2 工具。
- 使用它们,让我们开始分配您的 IP。
- 确保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 等。