IPv6 доступ к хостам LAN снаружи

Настройка, программирование, распределённые вычисления

Модераторы: Olej, bellic, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

IPv6 доступ к хостам LAN снаружи

Непрочитанное сообщение Olej » 28 май 2023, 18:27

Задача известная: как получить доступ из внешнего Интернет к локальным хостам LAN ... находящимися за NAT :?:
(Или, например, другая формудировка той же задачи: "А как я могу выставить в Интернет на всеобщий доступ свой WEB-ресурс, если я его развернул на локальном хосте LAN с частным IP 10.0.5.55?")

И способов решения её есть много:
О доступе к сайту на локалхост извне
туннель SSH к удалённым хостам
Способы то известные...

Но всё меняется при переходе от IPv4 (с которым жили 40 лет) к IPv6.
И меняется и в лучшую сторону, и в худшую сторону...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

IPv6 доступ к хостам LAN снаружи

Непрочитанное сообщение Olej » 28 май 2023, 18:36

Olej писал(а):
28 май 2023, 18:27
Но всё меняется при переходе от IPv4 (с которым жили 40 лет) к IPv6.
В общем, в теории всё понятно ... "плавали - знаем".

Но :!:
IPv6 пока ещё часто (по крайней мере в ... русскоязычном пространстве Интернет):
- не обеспечивают провайдеры через которых вы выходите в Интернет;
- не обеспечивают хостеры (арендодатели) через которых обеспечивается вход на серверные ресурсы в Интернет (с "белыми");

Но вот очень интересно, как обстоят с этим дела в mesh-сети Yggdrasil, которая:
- обеспечивает ячеистую сеть с IPv6 адресацию...
- которая не требует для выхода в Интернет предоставления IPv6
- т.е. сеть не является "совсем IPv6"...
- и первые 2 пункта этого перечисления как-бы входят в противоречие.

Вот и проверим. :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

IPv6 доступ к хостам LAN снаружи

Непрочитанное сообщение Olej » 28 май 2023, 18:45

Дальний, дальний хост в Интернет (хост) этого форума, в Казахстане...
Для этой площадки хостинга хостер Timeweb не предоставляет IPv6.
Но я могу туда зайти по SSH по тривиальному IPv4:

Код: Выделить всё

olej@R420:~$ ssh olej@linux-ru.ru
olej@linux-ru.ru's password: 
Linux 277938.local 4.19.0-23-amd64 #1 SMP Debian 4.19.269-1 (2022-12-20) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun May 28 18:08:13 2023 from 193.28.177.117
Уже там...
IPv4 адрес "белый":

Код: Выделить всё

olej@277938:~$ ip -4 a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 90.156.230.27/24 brd 90.156.230.255 scope global dynamic eth0
       valid_lft 56464sec preferred_lft 56464sec
А вот IPv6 адреса от провайдера 2000::/64 IANA там нет.
Зато есть установленный Yggdrasil IPv6 200::/7 :

Код: Выделить всё

olej@277938:~$ ip -6 a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fe80::2c49:10ff:feb4:b202/64 scope link 
       valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 state UNKNOWN qlen 500
    inet6 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::d86f:9577:d828:cb4d/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
Это и будет на, этот раз, клиент IPv6.
Чтоб не запутаться:

Код: Выделить всё

olej@277938:~$ hostname
277938.local

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

IPv6 доступ к хостам LAN снаружи

Непрочитанное сообщение Olej » 28 май 2023, 18:55

Olej писал(а):
28 май 2023, 18:45
Дальний, дальний хост в Интернет (хост) этого форума, в Казахстане...
И локальный хост мой, в LAN ... c "серым" (частным) IP ... и перекрытый со всех сторон NAT-ами от провайдера, который предоставляет один-единственный "белый" IP для всех десятка хостов этой LAN:

Код: Выделить всё

olej@nvme:~$ ip -4 a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.1.241/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
       valid_lft 133902sec preferred_lft 133902sec

Вот тот IP под, которым видятся все хосты этой LAN во внешнем мире (--noproxy чтоб никакие системные переменные окружения мои не вмешались в работу):

Код: Выделить всё

olej@R420:~/2023/Yggdrasil/yggdrasil-go$ curl --noproxy '*' ifconfig.co
193.28.177.117
Или так ... для перестраховки:
Снимок экрана от 2023-05-28 18-53-19.png
Снимок экрана от 2023-05-28 18-53-19.png (80.34 КБ) 395 просмотров
Куда уж локальнее :!: :lol:
Чтоб не запутаться:

Код: Выделить всё

olej@nvme:~$ hostname
nvme

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

IPv6 доступ к хостам LAN снаружи

Непрочитанное сообщение Olej » 28 май 2023, 19:03

Olej писал(а):
28 май 2023, 18:55
И локальный хост мой, в LAN ... c "серым" (частным) IP ... и перекрытый со всех сторон NAT-ами от провайдера, который предоставляет один-единственный "белый" IP для всех десятка хостов этой LAN:
Но и здесь работает Yggdrasil:

Код: Выделить всё

olej@nvme:~$ ip -6 a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fe80::522d:d0bd:b221:a526/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 state UNKNOWN qlen 500
    inet6 31c:4cbf:9e0b:2904::2/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 21c:4cbf:9e0b:2904:301c:1c7a:9715:62c0/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::2c57:9c88:11cd:1d61/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Код: Выделить всё

root@nvme:~# yggdrasilctl getSelf
Build name:   	yggdrasil                                                       	
Build version:	0.4.7                                                           	
IPv6 address: 	21c:4cbf:9e0b:2904:301c:1c7a:9715:62c0                          	
IPv6 subnet:  	31c:4cbf:9e0b:2904::/64                                         	
Coordinates:  	[2 29 1 39]                                                     	
Public key:   	0000000d9a030fa6b7de7f1f1c2b4754e9fb66086cf971f7997576e842902ef4	
И пиров внешних у него, как понимаете, нет и быть не может IPv6:

Код: Выделить всё

root@nvme:~# grep -v \# /etc/yggdrasil.conf | grep " Peers" -A6
  Peers: [
     tls://s-ams-0.sergeysedoy97.ru:65535 
     tcp://78.27.153.163:33165
     tls://s-msk-1.sergeysedoy97.ru:65535
     tcp://193.111.114.28:8080
     tls://78.27.153.163:179
  ]
И это чудо сейчас будет выступарь как сервер IPv6.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

IPv6 доступ к хостам LAN снаружи

Непрочитанное сообщение Olej » 28 май 2023, 19:12

Olej писал(а):
28 май 2023, 18:45
Это и будет на, этот раз, клиент IPv6.
Начнём с проверки:

Код: Выделить всё

olej@277938:~$ ping -c3 31c:4cbf:9e0b:2904::2
PING 31c:4cbf:9e0b:2904::2(31c:4cbf:9e0b:2904::2) 56 data bytes
64 bytes from 31c:4cbf:9e0b:2904::2: icmp_seq=1 ttl=64 time=156 ms
64 bytes from 31c:4cbf:9e0b:2904::2: icmp_seq=2 ttl=64 time=155 ms
64 bytes from 31c:4cbf:9e0b:2904::2: icmp_seq=3 ttl=64 time=156 ms

--- 31c:4cbf:9e0b:2904::2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 3ms
rtt min/avg/max/mdev = 155.263/155.724/156.181/0.494 ms
Коннект IPv6 есть.
Теперь SSH терминальная сессия IPv6:

Код: Выделить всё

olej@277938:~$ ssh olej@31c:4cbf:9e0b:2904::2
The authenticity of host '31c:4cbf:9e0b:2904::2 (31c:4cbf:9e0b:2904::2)' can't be established.
ECDSA key fingerprint is SHA256:kESE2lb6qQK9VPVLn5mTsZSD2sd5u5R7tBZ1XonZQ6w.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '31c:4cbf:9e0b:2904::2' (ECDSA) to the list of known hosts.
olej@31c:4cbf:9e0b:2904::2's password: 
Linux nvme 5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun May 28 17:52:48 2023 from fe80::13f5:9fe2:6393:bf4a%enp3s0
...

Код: Выделить всё

olej@nvme:~$ hostname
nvme

Код: Выделить всё

olej@nvme:~$ ip -4 a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.1.241/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
       valid_lft 132681sec preferred_lft 132681sec
О-ба-на :!:
Что произошло :!:
- я с сервера в Казахстане подключился по SSH IPv6 к локальному компьютеру в Харькове за NAT и с частным IPv4 адресом...
- и результат выполнения команд в этой IPv6 сессии я наблюдаю, обратным порядком, по другой сессии SSH IPv4, установленной ранее из локального компьютера к серверу в Казахстане...
Смешно :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

IPv6 доступ к хостам LAN снаружи

Непрочитанное сообщение Olej » 28 май 2023, 19:41

Olej писал(а):
28 май 2023, 19:12
Смешно
Ещё куда более смешной эксперимент... :lol:
Здесь три взаимодействующих стороны, каждая из которых может находиться в любых концах мира и за любыми NAT-авми.

1. Из стороннего хоста (R420) своей LAN устанавливаю IPv4 сессию с туннелированием X11 графического протокола - к серверу в Казахстане ... который, кстати, совершенно консольный, ничего там нет от GUI и для GUI:

Код: Выделить всё

olej@R420:~$ ssh -Y olej@linux-ru.ru
olej@linux-ru.ru's password: 
Linux 277938.local 4.19.0-23-amd64 #1 SMP Debian 4.19.269-1 (2022-12-20) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun May 28 18:40:18 2023 from 193.28.177.117

Код: Выделить всё

olej@277938:~$ hostname
277938.local
2. Теперь уже в этой терминальной сесии (на сервере, далеко) требую, через сессию IPv6 с туннелированием X11, выполнить GUI приложение на всё том же локальном хосте (nvme), на этой же LAN за всеми NAT-ами:

Код: Выделить всё

olej@277938:~$ ssh -Y olej@31c:4cbf:9e0b:2904::2 xclock
olej@31c:4cbf:9e0b:2904::2's password: 
...

И ...
xclock.ssh.png
xclock.ssh.png (13.42 КБ) 390 просмотров
Что происходит:
- хост в LAN nvme выполняет GUI xclock и ... отправляет изображение (X11 протокол) по IPv6 в Казахстан...
- ... там сервер 277938.local (не имеющий ни малейшего представления о графике) ретранслирует протокол X11 в сессию SSH IPv4 на другой локальный хост LAN R420...
- который (R420) и отрисовывает изображение на своём X-сервере. :-o
Изображение достаточно бегло реагирует на действия, масштабируется, растягивается... и стрелки часов движутся :-P

P.S. Такое изображение не удастся завхватить локальным скринсейвером...
Для этого нужно иметь установленным imagemagick (скорее всего есть по дефаулту):

Код: Выделить всё

olej@R420:~$ aptitude search imagemagick | grep ^i
i  imagemagick - программы для работы с изображениями — двоичные файлы
i  imagemagick-6-common - программы для работы с изображениями — инфраструктура
i  imagemagick-6.q16 - image manipulation programs -- quantum depth Q16

Дальше:

Код: Выделить всё

olej@R420:~$ import xclock.ssh.png
И выделяем область экрана для изображения...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

IPv6 доступ к хостам LAN снаружи

Непрочитанное сообщение Olej » 28 май 2023, 22:33

Olej писал(а):
28 май 2023, 18:27
И меняется и в лучшую сторону, и в худшую сторону...
То что рассмотрено выше - это "в лучшую сторону".
А теперь о том что "в худшую сторону":

Код: Выделить всё

olej@277938:~$ nmap -6 31c:4cbf:9e0b:2904::2
Starting Nmap 7.70 ( https://nmap.org ) at 2023-05-28 22:13 MSK
Nmap scan report for 31c:4cbf:9e0b:2904::2
Host is up (0.12s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
23/tcp open  telnet

Nmap done: 1 IP address (1 host up) scanned in 10.60 seconds
Это что значит?
А это значит, что с сервера стоящего в Казахстане можно за 10 сек. просканировать открытые порты (из числа общеизвестных) любого компьютера работающего в любой локальной сети в любой точке мира.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

IPv6 доступ к хостам LAN снаружи

Непрочитанное сообщение Olej » 29 май 2023, 02:12

Olej писал(а):
28 май 2023, 22:33
А это значит, что с сервера стоящего в Казахстане можно за 10 сек. просканировать открытые порты (из числа общеизвестных) любого компьютера работающего в любой локальной сети в любой точке мира.

Код: Выделить всё

olej@277938:~$ nmap -6 31c:4cbf:9e0b:2904::2 -p 1-65535
Starting Nmap 7.70 ( https://nmap.org ) at 2023-05-28 22:14 MSK
Nmap scan report for 31c:4cbf:9e0b:2904::2
Host is up (0.12s latency).
Not shown: 65532 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
23/tcp   open  telnet
5355/tcp open  llmnr

Nmap done: 1 IP address (1 host up) scanned in 1150.76 seconds
И это может занять в 1/3 часа, но мы можем прозондировать и все потенциально существующие порты за тысячи километров :!: :-o :-(

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

IPv6 доступ к хостам LAN снаружи

Непрочитанное сообщение Olej » 30 май 2023, 19:03

Olej писал(а):
28 май 2023, 19:41
Ещё куда более смешной эксперимент...
Ещё более "наглый" эксперимент, который имеет отдельную практическую ценность:
- иду к соседу, которому я регулярно поддерживаю компьютеры, обновляю, чишу...
- у него совершенно другой чем у меня провайдер GPON, со всеми своими NAT-ами...
- скачиваем и устанавливаем Yggdrasil:
Olej писал(а):
27 май 2023, 18:11
3. https://github.com/yggdrasil-network/yg ... o/releases - собранные релизы последней стабильной версии (и также предыдущих) непосредственно для инсталляции:

Код: Выделить всё

olej@Inspiron:~/Загрузки$ ls -l yggdrasil-0.4.7-amd64.deb
-rw-rw-r-- 1 olej olej 3703666 мая 30 16:53 yggdrasil-0.4.7-amd64.deb

Код: Выделить всё

olej@Inspiron:~/Загрузки$ sudo dpkg -i yggdrasil-0.4.7-amd64.deb
Выбор ранее не выбранного пакета yggdrasil.
(Чтение базы данных … на данный момент установлено 430853 файла и каталога.)
Подготовка к распаковке yggdrasil-0.4.7-amd64.deb …
Распаковывается yggdrasil (0.4.7) …
Настраивается пакет yggdrasil (0.4.7) …
Generating initial configuration file /etc/yggdrasil.conf
Please familiarise yourself with this file before starting Yggdrasil
- В том же рабочем каталоге (чтобы его легко было править без root) создаём "проект" конфиг файла:

Код: Выделить всё

olej@Inspiron:~$ yggdrasil -genconf > yggdrasil.conf
- дописываю в файл внешние пиры:

Код: Выделить всё

olej@Inspiron:~$ grep -v \# yggdrasil.conf | grep " Peers" -A5
  Peers: [
        tcp://yggdrasil.su:62486
        tcp://y.zbin.eu:7743
        tcp://212.154.86.134:8800
        tcp://158.101.229.219:17002
         ]
- копирую подготовленный конфиг файл в то место, где ему по дефаулту надлежит лежать:

Код: Выделить всё

olej@Inspiron:~$ sudo cp yggdrasil.conf /etc/yggdrasil.conf
Теперь всё готово к запускку IPv6...
На всё про всё это заняло минут 15.

Ответить

Вернуться в «Сети»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 14 гостей