-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
通过命令获取IP参考 #531
Comments
|
|
请问有办法通过命令获取同局域网其他设备Ipv6吗? |
Linux get IPv6 prefix (移动开头2409) |
Windows PowerShell获取ip 参阅微软文档根据网络环境自定义一些参数进行筛选 自用获取公网ipv6 |
@jeessy2 目前匹配正则表达式只能按照顺序选择,大部分时候没问题,但偶尔会遇到一个问题。我这边网卡的IPV6地址,总是有2个地址,一个长一点的,一个短一点的。我发现只有长的才能用外网访问,短的没法访问。但是长的在前还是短的在前有些随机性。 比如这种: 请问能不能设个选项,固定选择长一点的那个,这样就不用选具体1或者2了,谢谢 |
ff:fe是长的那个?如果是直接正则表式中输入 |
请问不需要输入@之类的符号吗?直接在匹配正则表达式栏里面填写ff:fe就可以了吗? |
应该可以 |
不加。@是指定第几个,你这个是匹配字符串正则 |
谢谢,测试可以了。只要不换网卡的Mac,理论上最后几位地址应该不会变的。 |
Linux 仅获取纯公网 IPv6 地址
|
MacOS下没有ip命令,可以使用ifconfig 或者安装iproute2mac工具,就可以使用ip命令了 |
ip -6 addr show dev eth0 | sed -n 's|^.inet6 ([^ ]/64).*$|\1|p' 选定/64ipv6 ip -6 addr | grep inet6 | awk -F '[ \t]+|/' '$3 == "::1" { next;} $3 ~ /^fe80::/ { next;} /ca1a/ {print $3}' 选中尾号CA1A的ip |
根据网卡地址查询 |
1 similar comment
根据网卡地址查询 |
我也遇到了这个问题,长的v6地址可以访问,短位的不行,但是我v6地址对应你们说的后几位是一直在变动的,有没有什么办法选择映射长的这一个地址啊。 |
输出最长行: awk '{ln=length}ln>max{delete result; max=ln}ln==max{result[NR]=$0}END{for(i in result) print result[i] }' 参考:https://www.baeldung.com/linux/print-longest-lines-in-file#using-theawk-command |
前四组2409:8a60:1111:2222这几位长得v6和短的v6地址都是一样的无法区分,后面的地址我看了一下记录。每次都不一样,不像上面的朋友有一个ff:fe是一直不变的,我就没办法用这个方法进行筛选。 |
好的,我去试一下看看能否生效。 |
您好,我的版本不支持命令获取,我是centos7.9,升级镜像的命令是什么呀,没看到有 |
从 Releases 下载并解压 ddns-go 就可以了。 |
|
请将输出通过管道传入 ip -6 addr | grep inet6 | awk -F '[ \t]+|/' '$3 == "::1" { next;} $3 ~ /^fe80::/ { next;} /inet6/ {print $3}' | awk '{ln=length}ln>max{delete result; max=ln}ln==max{result[NR]=$0}END{for(i in result) print result[i] }' |
十分感谢,已经成功输出最长的ip地址。 |
您好,我又遇到一个问题 在我的群晖上输出的最长地址为fd7a开头的非公网v6地址,如何可以限制为240开通的最长地址啊 |
先看一下 Linux 仅获取纯公网 IPv6 地址 输出的是什么: ip -6 addr | grep inet6 | awk -F '[ \t]+|/' '$3 == "::1" { next;} $3 ~ /^fe80::/ { next;} /inet6/ {print $3}' |
感谢回答 |
配置文件有更改选择网口eth0还是eth1 但是是不起作用的 |
建议补一下网络知识 |
为什么不考虑使用 |
能不能在 ipv6 的 |
不准确+你不知道这个网站服务哪天会关 |
你开个issue吧 |
|
TLDR, 网站获取到的是临时ipv6地址,然而只出不进,导致IPV6业务不通 |
希望能有局域网内机器获取主路由公网IPv6地址的方案,,,🙏🙏🙏 |
按照 IPv6 的约定,对外暴露 IP地址 应当始终为 动态临时的IPv6地址 。 Windows Powershell 代码Get-NetIPAddress -AddressFamily IPv6 -PrefixOrigin RouterAdvertisement -SuffixOrigin Random -AddressState Preferred | Select-Object -ExpandProperty IPAddress Linux bash 代码因为 Linux 执行 ip route get 240c::6666 | grep -oE 'src.*$' | awk {'print $2'} |
通过软路由openwrt上安装DDns-go,来获取局域网中一台esxi主机的IPv6地址,我想的是通过mac地址来确定当前esxi的IPv6地址,输入ip -6 route | awk '{print $1}' | awk '/2408:?/' | awk -F::/ '{print $1 "1C:83:41:41:A0:BA"}' | tail -1 后,也拿到了正确的ipv6地址,但是多了个"\n"。 请问怎么能把\n 删掉呢? |
在结尾添加 ip -6 route | awk '{print $1}' | awk '/2408:?/' | awk -F::/ '{print $1 "1C:83:41:41:A0:BA"}' | tail -1 | tr -d '\n' 参考:https://stackoverflow.com/questions/12524308/bash-strip-trailing-linebreak-from-output |
这个方法用在安卓手机上,比如手机在开启代理时,代理了IPv6流量,同时使用了随机虚拟网卡,导致通过接口获取的不是真实IP,而是代理IP,所以先通过ip route过滤路由,找到本机默认的网卡,再去打印匹配到真实的IPv6地址 |
在win下也会由于会获取到旧ipv6地址导致不可用,个人通过阅读各位命令外加chatgpt写了一个新的: Get-NetIPAddress -AddressFamily IPv6 -PrefixOrigin RouterAdvertisement -SuffixOrigin Random -AddressState Preferred | Select-Object -ExpandProperty IPAddress | ForEach-Object { $_.Split(':')[0..3] + "XXXX:XXXX:XXXX:XXXX" -join ':'} |
我觉得你网关的 IPv6 配置有问题。按理来说被系统 Preferred 的临时 IPv6 地址都应该是有效的,因为系统就拿是它来上网冲浪的! 查看上网冲浪的 IPv6 地址: https://ipleak.net/ 建议检查一下命令 |
重新拨号了 输出的ip包含旧的前缀 当然不能用。 |
动态PD前缀不适合开启 DHCPv6 的 statefull ,最好 stateless 。有些地区的运营商仍会为旧的PD前缀提供路由,所以我的话也不能说得太满。你这种情况只能是 stateless 。方便的话,加我 tg: xfl12345 ,为你提供远程支持。 |
可能是我表述的不清楚。路由器重新拨号,但是设备网卡没有重启,所以存在多个前缀不同的v6地址。我用这段命令可以正确获取最新v6前缀并使用。 感谢你的回复。 我还有另一个问题:我通过win上的ddns-go给我的小米10进行ddns。目前发现小米虽然会组成固定的后缀 ,但是并不是通过mac地址来生成。(路由器重新拨号的话不影响这个后缀)。如果重启手机的话会有一段新的后缀,我已经设置了使用真实mac来链接wifi。 |
我的主路由是华硕的,自带ddns,我的问题是这个自带的ddns会同时解析非公网的ipv4和公网的ipv6,但是使用wireguard的时候客户端用域名的话总是会解析成ipv4导致连接不上,所以用ddnsgo,dig华硕给的那个域名来获取主路由的ipv6地址 不知道对你有没有用 我也想直接用ip neigh来着,毕竟少一个故障点,但是好像看不到主路由的公网ipv6地址,只有个ipv4的网关地址和内网ipv6地址(而且主路由自己得到的ipv6前缀好像和分配下去的前缀并不一样,不懂能不能这样搞 |
在#1107 更新了一下,应该能ssh到主路由的都能这样干了 |
Linux脚本,可以通过输入 mac 地址获取 对应的EUI-64格式 的IPv6 地址
实际使用(IPv6前缀隐藏了4位)
|
我自己路由器是华硕 IPv6用的Stateful模式 所以家里的设备IPv6不是按照标准EUI-64格式 而是短的IPv6,这里分享一下我用一台Linux获取家里其他设备的IPv6命令: |
ip -6 neigh | awk '/240:?/' | awk '/9a:4d?/' | awk '{print $1}' 我是通过访问arp筛选的,匹配公网,mac地址,然后打印第一个。 |
分享一条自用两年左右的 Windows 获取 IPv6 的 PowerShell 命令(亦可稍微修改用于获取网卡上的公网 IPv4 地址)
如果不知道网络适配器名称怎么填,可以用以下命令查询
因为 PowerShell 是个面向对象的脚本语言,所以可以很方便的直接用管道符配合 Sort-Object 按特定属性直接排序
排序完的数据仍然是个对象列表(如果只有一个元素,那可以直接用 另外有的网关路由器可能会出现就算分配的是当前 PD 前缀的 IPv6 地址 这边贴个自己的博客链接,分享解决 Windows 平台 IPv6 连通性问题的方法: 更多用法可参考: |
openwrt 可以通过这个命令获取 ipv6 地址, 240e 是电信,其他可以自行替换 |
ip -6 addr show 指定网卡名,保留 global 且排除 deprecated noprefixroute 状态后的地址
|
使用 DNS 服务器获取设备的公网 IPv4 地址(IPv6类似): dig TXT -4 o-o.myaddr.l.google.com @ns1.google.com +short | egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}" 参见: |
通过命令获取IP,可分享出自己的脚本,方便大家
crtl+c
crtl+v
。The text was updated successfully, but these errors were encountered: