IPv6 доступ к хостам LAN снаружи
Модераторы: Olej, bellic, vikos
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
IPv6 доступ к хостам LAN снаружи
(Или, например, другая формудировка той же задачи: "А как я могу выставить в Интернет на всеобщий доступ свой WEB-ресурс, если я его развернул на локальном хосте LAN с частным IP 10.0.5.55?")
И способов решения её есть много:
О доступе к сайту на локалхост извне
туннель SSH к удалённым хостам
Способы то известные...
Но всё меняется при переходе от IPv4 (с которым жили 40 лет) к IPv6.
И меняется и в лучшую сторону, и в худшую сторону...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
IPv6 доступ к хостам LAN снаружи
В общем, в теории всё понятно ... "плавали - знаем".
Но
IPv6 пока ещё часто (по крайней мере в ... русскоязычном пространстве Интернет):
- не обеспечивают провайдеры через которых вы выходите в Интернет;
- не обеспечивают хостеры (арендодатели) через которых обеспечивается вход на серверные ресурсы в Интернет (с "белыми");
Но вот очень интересно, как обстоят с этим дела в mesh-сети Yggdrasil, которая:
- обеспечивает ячеистую сеть с IPv6 адресацию...
- которая не требует для выхода в Интернет предоставления IPv6
- т.е. сеть не является "совсем IPv6"...
- и первые 2 пункта этого перечисления как-бы входят в противоречие.
Вот и проверим.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
IPv6 доступ к хостам LAN снаружи
Для этой площадки хостинга хостер 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
Зато есть установленный 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
Чтоб не запутаться:
Код: Выделить всё
olej@277938:~$ hostname
277938.local
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
IPv6 доступ к хостам LAN снаружи
И локальный хост мой, в 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
Чтоб не запутаться:
Код: Выделить всё
olej@nvme:~$ hostname
nvme
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
IPv6 доступ к хостам 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
Код: Выделить всё
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
]
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
IPv6 доступ к хостам LAN снаружи
Начнём с проверки:
Код: Выделить всё
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
Теперь 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, установленной ранее из локального компьютера к серверу в Казахстане...
Смешно
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
IPv6 доступ к хостам LAN снаружи
Ещё куда более смешной эксперимент...
Здесь три взаимодействующих стороны, каждая из которых может находиться в любых концах мира и за любыми 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
Код: Выделить всё
olej@277938:~$ ssh -Y olej@31c:4cbf:9e0b:2904::2 xclock
olej@31c:4cbf:9e0b:2904::2's password:
...
И ... Что происходит:
- хост в LAN nvme выполняет GUI xclock и ... отправляет изображение (X11 протокол) по IPv6 в Казахстан...
- ... там сервер 277938.local (не имеющий ни малейшего представления о графике) ретранслирует протокол X11 в сессию SSH IPv4 на другой локальный хост LAN R420...
- который (R420) и отрисовывает изображение на своём X-сервере.
Изображение достаточно бегло реагирует на действия, масштабируется, растягивается... и стрелки часов движутся
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@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@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
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
IPv6 доступ к хостам LAN снаружи
Ещё более "наглый" эксперимент, который имеет отдельную практическую ценность:
- иду к соседу, которому я регулярно поддерживаю компьютеры, обновляю, чишу...
- у него совершенно другой чем у меня провайдер GPON, со всеми своими NAT-ами...
- скачиваем и устанавливаем Yggdrasil:
Olej писал(а): ↑27 май 2023, 18:113. 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
Код: Выделить всё
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
На всё про всё это заняло минут 15.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость