%20.png)
У меня есть клиентское (Linux)-серверное (Windows) приложение. У меня Windows 7 в качестве основной ОС и Ubuntu 18.04 на VirtualBox. Мне нужно проверить, может ли клиент подключаться к серверу через IPv6. Как это настроить?
решение1
Мне нужнотестчто клиент может подключиться к серверу через IPv6.
Вам нужно смотреть с обоих концов. Только конечные точки Linux будут по теме этого сайта. (Но вы можете посмотреть, как далеко вы можете зайти. И если вы зайдете достаточно далеко, вы можете поискать то, что работает на Windows :-).
Существует всего около четырех возможностей.
Выполните эту команду:ip -6 addr
1. Нет адреса IPv6: у вас нет строк, начинающихся с inet6
. Тест не пройден.
2. Только локальные адреса IPv6: inet6
все строки под сетевым интерфейсом, обращенным к вашей целевой сети, начинаются с fe80::
. Технически возможно использовать локальные адреса, однако некоторые приложения их не поддерживают. Если возможно, разрешите эту ситуацию, т. е. расценивайте ее как неудачный тест.
Какой сетевой интерфейс обращен к вашей целевой сети?
- Интерфейс обратной связи Linux называется
lo
. Игнорируйте его. - Большинство физических интерфейсов Linux начинаются с
e
(Ethernet),wl
(wireless),ww
(wide-area wireless) или, что менее вероятно,ppp
(разная ерунда :-P). В вашем случае вы проигнорируете их. - Интерфейсы Linux для виртуальных машиниметь тенденциюназываться начинающимся с
v
. VirtualBox используетvboxnet
, а libvirt (virt-manager) используетvirbr
. В вашем случае интерфейс, который вам нужен, почти наверняка один из них.
3. Потенциально маршрутизируемый адрес ipv6: т.е. по крайней мере один адрес, который не запускается fe80::
. Тест не провален - пока :-). Перейти к следующему шагу.
Определив маршрутизируемый адрес IPv6, вы можете протестировать подключение к нему из другой системы.
ping6
все в порядке -еслиВы знаете, что ping не блокируется брандмауэром.
Не блокируйте ping в своих брандмауэрах, если только брандмауэр не блокируетвсевходящие соединения. Иначе это не имеет смысла, и вы просто усложняете себе жизнь.
Если вы не можете разрешить пинг
Ваше заявление будет содержать инструкциигде-токакой номер порта (и какой тип порта) он использует, чтобы разрешить ему прохождение через брандмауэр.
Для проверки подключения к порту TCP я бы использовал sudo nmap -sT -p 1,$MYPORT $MYADDRESS
. Вы также можете использовать sudo nmap -sT -F $MYADDRESS
для сканирования общих портов. Последнее может быть полезным, если оно показывает, что возможно установить соединение надругойпорт, например, возможно, вы забыли разрешить нужный порт через брандмауэр.
Для проверки портов UDP используйте -sU
вместо -sT
. Я бы не стал заморачиваться, nmap -sU -F
так как сканирование UDP может бытьгораздо медленнеечем сканирование TCP.
Чтобы увидеть, как выглядит успешный тест, просканируйте адрес ::1
(localhost). Если у вас еще нет открытого порта на localhost, откройте второе окно терминала и запустите ncat -l ::1 22
, чтобы запустить поддельную службу SSH, которая nmap
обнаружит.
Локальные адреса ссылок
Если вам необходимо подключиться к адресу link-local, вам нужно будет включить идентификатор ссылки. Например, для ping
fe80::1 на link vboxnet0
, запустите ping6 fe80::1%vboxnet0
. Это одна из причин, по которой адреса link-local менее полезны: не все приложения знают, как указать идентификатор ссылки.