Virtualbox под управлением Ubuntu и ipv6

0

Я просто играю с ipv6 и пытаюсь использовать netcat поверх ipv6. Я попробовал следующее, и это работает.

$ # terminal one 
$ nc -6 -l 7171

$ # terminal two
$ nc -vvv -6 ::1 7171                                                                                                                           
Connection to ::1 7171 port [tcp/*] succeeded!

Я попытался запустить ifconfig и получил следующий вывод: -

eth0      Link encap:Ethernet  HWaddr 08:00:27:0c:5c:90
          inet addr:192.168.5.177  Bcast:192.168.5.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe0c:5c90/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:363545 errors:0 dropped:0 overruns:0 frame:0
          TX packets:389270 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:75700504 (75.7 MB)  TX bytes:471219676 (471.2 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:15246 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15246 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1010273 (1.0 MB)  TX bytes:1010273 (1.0 MB)

Затем я попытался подключить клиент nc через интерфейс eth0.

$ # terminal one 
$ nc -6 -l 7171

$ # terminal two
$ nc -vvv -6 fe80::a00:27ff:fe0c:5c90 7171
nc: connect to fe80::a00:27ff:fe0c:5c90 port 7171 (tcp) failed: Invalid argument

Почему это происходит? Я делаю что-то явно неправильно?


источник

Ответы:

2

Адрес, к которому вы пытаетесь подключиться, является локальным адресом связи. При использовании таких адресов вы всегда должны указывать сетевой интерфейс. Общей нотацией является суффикс %и идентификатор интерфейса. В вашем примере , что стало бы: fe80::a00:27ff:fe0c:5c90%eth0.

А поскольку локальные адреса ссылки являются локальными для ссылки, они не могут быть направлены. Из-за этого, как правило, гораздо проще назначать «нормальные» адреса IPv6 вашим интерфейсам. Если ваш Интернет-провайдер не предоставил вам возможность подключения по IPv6, вы можете настроить туннель, например, SixXS или Hurricane Electric, или использовать частные адреса. Они называются ULA (уникальные локальные адреса) в IPv6, и вы можете случайным образом создать свой собственный префикс / 48 в блоке fd00::/8. Это предотвращает конфликты с другими адресами ULA при соединении сетей (VPN-туннели, слияния компаний и т. Д.)

Сандер Штеффанн
источник
0

Вы должны добавить индекс зоны, чтобы связать локальные адреса, если вы хотите их использовать. В системах Linux это имя устройства. Это потому, что локальные адреса имеют префикс fe80::/10на каждом устройстве.

Предположим, у вас есть два интерфейса (скажем, Ethernet и Wi-Fi), тогда что-то вроде ping6 fe80::1неоднозначно - это fe80::1на Ethernet или на устройстве Wi-Fi? И то, и другое может быть вполне возможным, но система не может знать, какой из них (и, конечно, не будет пытаться). Так что вы должны сказать, нравится ping6 fe80::1%enp2s0или около того. Вот почему адреса локальной ссылки несколько громоздки в использовании. (Кодировка URL этого особенно неудобна.) Помимо своей важности для обнаружения соседей, они служат последним средством, если что-то с конфигурацией IP-адреса идет не так, но они не предназначены для регулярного использования - используйте глобальные адреса или уникальные локальные адреса для этого. ,

Оффтоп: разумно ознакомиться с ipутилитой из пакета iproute2, если вы хотите поиграть с IPv6, она заменяет и превосходит ifconfigи route.

countermode
источник