我对 Linux 还很陌生,所以不要对我太苛刻:)我目前正处于 ISP 的 CGNAT 下,我可以连接到网络外部的家庭服务器的唯一方法是通过 WAN IP 访问它(这可以在路由器管理页面中看到)。我发现通过输入
traceroute -n 8.8.8.8
然后复制第三个IP地址并将其放入ping命令中
ping -c 3 -R x.x.x.x
给我 WAN IP 的输出。
我正在寻找将该 WAN IP 复制到文件中并将其粘贴到 ddclient ddclient.conf 的配置文件中的方法。
如果有任何更优雅的解决方案来实现我想要实现的目标,那就太好了!
答案1
使用ping
andtraceroute
为此不一定有帮助,因为他们使用ICMP作为协议,出于安全原因,许多系统都配置为不响应 ICMP 回显请求。我的系统的示例:
pg@TREX:~$ traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 192.168.1.1 0.699 ms 0.594 ms 0.800 ms
2 213.243.152.36 25.235 ms * *
3 * * *
4 * * *
5 142.250.169.179 26.723 ms 26.534 ms 26.464 ms
6 142.250.169.178 34.509 ms 34.216 ms 34.234 ms
7 * * *
8 8.8.8.8 21.684 ms 24.621 ms 16.712 ms
星号表示没有响应的系统。
dig
轻松提供您正在寻找的内容:
pg@TREX:~$ dig +short myip.opendns.com @resolver1.opendns.com
XX.YY.50.178
如果得到空结果,请在dig
ging 之前禁用 IPv6。
pg@TREX:~$ ip add show dev enp11s0
2: enp11s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 78:f2:9e:f6:1c:0f brd ff:ff:ff:ff:ff:ff
inet 192.168.1.220/24 brd 192.168.1.255 scope global dynamic noprefixroute enp11s0
valid_lft 86262sec preferred_lft 86262sec
inet6 2001:96ab:c4:3c0a:ec56:2319:9a63:3/128 scope global dynamic noprefixroute
valid_lft 7064sec preferred_lft 3464sec
inet6 fdec:5623:b43a:a2a9:9039:d8ab:961f:bd6c/64 scope global dynamic noprefixroute
valid_lft 7074sec preferred_lft 3474sec
inet6 2001:14bb:a2:6830:28de:50f1:f2db:9ebf/64 scope global dynamic noprefixroute
valid_lft 7074sec preferred_lft 3474sec
inet6 fe80::9f5b:debb:1215:54e2/64 scope link noprefixroute
valid_lft forever preferred_lft forever
pg@TREX:~$ dig +short myip.opendns.com @resolver1.opendns.com
pg@TREX:~$
答案2
网络上有几个站点会告诉您所连接的 IP 地址。我觉得有用的其中之一是http://ifconfig.me(这适用于 http 或 https 协议。在浏览器中查看此内容将显示您的 IP 地址以及有关浏览器的一些详细信息以及命令行使用说明)
您可以在命令行上使用 获取 IP curl
。例如
curl ifconfig.me
这将只返回您的 IP 地址,没有 html,没有其他内容,甚至 IP 后面也没有换行符。
我将它与以下简单的包装脚本一起使用:
$ cat /usr/local/bin/what-is-my-ip.sh
#!/bin/sh
unset http_proxy
unset https_proxy
curl ifconfig.me
echo