cns*_*nst 5 ipv6 load-balancing ip-address xargs ipv4
出于监控目的,我想找出移动战士 UNIX 机器的所有公共 IPv4 和 IPv6 地址。
请注意,这与在 shell 脚本中查找公共 IP 地址不同,因为有以下额外要求:
我们可以使用(来自 BIND 的 DNS 查找实用程序)通过 DNS确定公共 IP 地址dig,这让我们可以尝试 UDP(带+notcp选项)和 TCP(+tcp选项),只留下 ICMP。但是,我们可以尝试将所有这些查询发送到多个独立的目标 IPv4 和 IPv6 地址,从而更有可能发生连接的负载平衡,返回更多独特的响应。
似乎根据参数的顺序, the-4和-6options with的定位dig也可能会有不同的处理——如果定位dig在说明@符之前,那么它被强制执行为硬性要求;如果定位在@说明符之后和/或作为最后一个参数,则它作为软要求强制执行(如果缺少 IPv6 连接,将使用 IPv4);下面的代码片段将其用作软要求,以避免必须实现错误处理。
我们可以使用GNU Parallel来混合和匹配这里有风险的几个命令和选项。
这是完整的解决方案:
parallel -kj16 dig -t txt o-o.myaddr.l.google.com +short \
::: @ns{1,2,3,4}.google.com ::: -4 -6 ::: +notcp +tcp
Run Code Online (Sandbox Code Playgroud)
这是与单行相同的代码段:
parallel -kj16 dig -t txt o-o.myaddr.l.google.com +short ::: @ns{1,2,3,4}.google.com ::: -4 -6 ::: +notcp +tcp
Run Code Online (Sandbox Code Playgroud)
这是内联的相同片段:
parallel -kj16 dig -t txt o-o.myaddr.l.google.com +short ::: @ns{1,2,3,4}.google.com ::: -4 -6 ::: +notcp +tcp
这是上述parallel调用将要完成的工作的演示:
% parallel -k echo dig -t txt o-o.myaddr.l.google.com +short \
? ::: @ns{1,2,3,4}.google.com ::: -4 -6 ::: +notcp +tcp
dig -t txt o-o.myaddr.l.google.com +short @ns1.google.com -4 +notcp
dig -t txt o-o.myaddr.l.google.com +short @ns1.google.com -4 +tcp
dig -t txt o-o.myaddr.l.google.com +short @ns1.google.com -6 +notcp
dig -t txt o-o.myaddr.l.google.com +short @ns1.google.com -6 +tcp
dig -t txt o-o.myaddr.l.google.com +short @ns2.google.com -4 +notcp
dig -t txt o-o.myaddr.l.google.com +short @ns2.google.com -4 +tcp
dig -t txt o-o.myaddr.l.google.com +short @ns2.google.com -6 +notcp
dig -t txt o-o.myaddr.l.google.com +short @ns2.google.com -6 +tcp
dig -t txt o-o.myaddr.l.google.com +short @ns3.google.com -4 +notcp
dig -t txt o-o.myaddr.l.google.com +short @ns3.google.com -4 +tcp
dig -t txt o-o.myaddr.l.google.com +short @ns3.google.com -6 +notcp
dig -t txt o-o.myaddr.l.google.com +short @ns3.google.com -6 +tcp
dig -t txt o-o.myaddr.l.google.com +short @ns4.google.com -4 +notcp
dig -t txt o-o.myaddr.l.google.com +short @ns4.google.com -4 +tcp
dig -t txt o-o.myaddr.l.google.com +short @ns4.google.com -6 +notcp
dig -t txt o-o.myaddr.l.google.com +short @ns4.google.com -6 +tcp
%
Run Code Online (Sandbox Code Playgroud)
为了扩展我们上面的解决方案,以下内容可用于对所有找到的地址执行 whois 和 rDNS 查找;请注意,要在 BSD 和 macOS 上使用 IPv6 查找,可能必须指定-aARIN、-AAPNIC 或-rRIPE 作为以下选项whois:
parallel -kj16 dig -t txt o-o.myaddr.l.google.com +short ::: @ns{1,2,3,4}.google.com ::: -4 -6 ::: +notcp +tcp | sort -n | uniq | parallel -vk ::: "echo" "host" "whois -a" :::: /dev/stdin
| 归档时间: |
|
| 查看次数: |
874 次 |
| 最近记录: |