![如何绑定到默认地址以外的特定链路本地 IPv6 地址?](https://linux22.com/image/1388279/%E5%A6%82%E4%BD%95%E7%BB%91%E5%AE%9A%E5%88%B0%E9%BB%98%E8%AE%A4%E5%9C%B0%E5%9D%80%E4%BB%A5%E5%A4%96%E7%9A%84%E7%89%B9%E5%AE%9A%E9%93%BE%E8%B7%AF%E6%9C%AC%E5%9C%B0%20IPv6%20%E5%9C%B0%E5%9D%80%EF%BC%9F.png)
我不能 100% 确定我在标题中使用的术语是否正确,因此如果有人比我更了解,请修改它。
我正在尝试复制一个我在野外看到的恶意脚本,目的是测试我应对它的选项。它绑定到 IPv6 /64 上的一组 IP 地址,然后用于从数百或数千个不同的 IP 地址泛洪 IRC。它能够绑定到不同的地址这一事实使其能够绕过某些自动的主机名限制并造成麻烦,尽管已经采取了现有措施。
基本上,我要解决的问题可以归结为以下几点。我正在使用运行 Ubuntu Server 13.10 的测试机:
$ uname -a
Linux sandbox 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9 16:12:00 UTC 2013 i686 i686 i686 GNU/Linux
我的网络设置如下:
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:18:f8:0d:c0:d5
inet addr:192.168.2.100 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::218:f8ff:fe0d:c0d5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9184009 errors:0 dropped:751 overruns:0 frame:57518
TX packets:1143073 errors:12057087 dropped:0 overruns:0 carrier:23942906
collisions:0 txqueuelen:1000
RX bytes:1475317803 (1.4 GB) TX bytes:287318593 (287.3 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:4007947 errors:0 dropped:0 overruns:0 frame:0
TX packets:4007947 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:663390993 (663.3 MB) TX bytes:663390993 (663.3 MB)
eth0 列表的这一inet6
行向我表明,列出的地址所在的整个 /64 都已分配给此机器作为本地链路,但我不能 100% 确定这是真的。无论如何,我用来测试连通性的以下命令未能按预期工作:
$ telnet -6 -b fe80::1234:1234:1234:1234%eth0 fe80::218:f8ff:fe0d:c0d5%eth0 6667
telnet: bind: Cannot assign requested address
我假设整个 /64 都分配给这台机器,这样是不是错了?如果不是,我该如何配置才能让这个功能正常工作(仅主机解决方案就可以了,因为这仅用于测试)?否则,我应该怎么做才能正确绑定到这个地址?
答案1
fe80::/64 是 eth0 所连接的整个以太网 LAN 的链路本地前缀。要为您的机器在该网络上提供另一个地址,您需要使用类似命令ifconfig
来告诉您的 IPv6 堆栈使用该地址,然后才能告诉telnet
它绑定到该地址。
我不记得确切的ifconfig
语法,但请查看手册页中的add
和子命令。alias