По информации справочно-информационного портала «Русский язык», «тоннель» и «туннель» - равноправные орфографические варианты (формы написания одного слова). В любом контексте возможно употребление любого из этих вариантов.
Наличие орфографических вариантов связано с историей слова: оно пришло из английского языка, в котором словом tunnel был назван проход под Темзой, построенный французским инженером Брюнелем.
туннели сквозь Интернет
Модераторы: Olej, bellic, vikos
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
туннели сквозь Интернет
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
туннели сквозь Интернет
Как частный случай, у нас уже есть тема: туннель SSH к удалённым хостам
Но вопрос шире: как прокладывать туннели в Интернет тогда, когда провайдер/администратор/хостер не хочет меня куда-то допускать31 янв 2022
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
туннели сквозь Интернет
Например ... используя IPv6 трафик Yggdrasil:
IPIP-туннель
GRE-туннель
Проброс соединений 6-4 (4-6) с помощью socat
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
туннели сквозь Интернет
Что интересно с Yggdrasil? - Что для экспериментов с туннелированием не нужны хосты с "белым" IP (как, например, для SSH туннелей). Можно прокладывать туннели между хостами LAN закрытыми NAT провайдеров, и разнесённых на тысячи километров .
И даже можно отрабатывать, с равным успехом, эти техники на 2-х срседних узлах LAN ... а затем запросто, тупо перенести это в любую геометрию, и это будет работать - за счёт IPv6.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
туннели сквозь Интернет
Вот эта статья, где этот "кто-то поделился" ... и даже прикреплю её сюда, чтобы не потерялась...в одном из чатов сообщества кто-то поделился PDF-файлом, в котором описывалось создание IPIP-туннеля поверх Yggdrasil. Автор использовал эти технологии для организации VPN-сервера на VPS, когда используемый им ранее протокол Wireguard начала блокировать тёмная сторона…
- Вложения
-
- yggdrasil_vpn.pdf
- (135.09 КБ) 25 скачиваний
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
туннели сквозь Интернет
1.
Выполним следующую команду на вашем локальном компьютере:
Код: Выделить всё
[olej@xenix ~]$ ip -br a show tun0
tun0 UNKNOWN 201:1171:48a7:6391:3920:2499:1ebd:757f/7 fe80::9daf:b75c:f4e:7b60/64
Выполним туже самую команду на нашем vps:
Код: Выделить всё
olej@esprimop420:~$ ip -br a show tun0
tun0 UNKNOWN 201:617b:8699:5a7f:356b:1da6:a5d6:c960/7 fe80::da81:772e:632d:9eba/64
2.
Создадим туннель на локальной машине:
Код: Выделить всё
[olej@xenix ~]$ sudo ip link add name ipip6 type ip6tnl local 201:1171:48a7:6391:3920:2499:1ebd:757f \
> remote 201:617b:8699:5a7f:356b:1da6:a5d6:c960 mode ipip6
[sudo] пароль для olej:
[olej@xenix ~]$ echo $?
0
После создания туннеля у нас появятся два новых интерфейса:
Код: Выделить всё
[olej@xenix ~]$ ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
enp2s0 UP 192.168.1.20/24 31c:4cbf:9e0b:2904::4/64 fe80::bdc9:d183:f9c0:ff56/64
virbr0 DOWN 192.168.122.1/24
tun0 UNKNOWN 201:1171:48a7:6391:3920:2499:1ebd:757f/7 fe80::9daf:b75c:f4e:7b60/64
ip6tnl0@NONE DOWN
ipip6@NONE DOWN
Работать мы будем с интерфейсом ipip6
Включим этот интерфейс:
Код: Выделить всё
olej@xenix ~]$ sudo ip link set ipip6 up
Код: Выделить всё
[olej@xenix ~]$ ip a s dev ipip6
6: ipip6@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1452 qdisc noqueue state UNKNOWN group default qlen 1000
link/tunnel6 201:1171:48a7:6391:3920:2499:1ebd:757f peer 201:617b:8699:5a7f:356b:1da6:a5d6:c960 permaddr ae4:147d:bc8a::
inet6 fe80::8e4:14ff:fe7d:bc8a/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
туннели сквозь Интернет
3.
- 172.16.1.1 #Для удаленного ретранслятора esprimop420
- 172.16.1.2 #Для локальной машины xenix
Далее вам нужно будет определиться с адресом подсети ipv4 , которая будет работать внутри
туннеля. Это может быть например 192.168.44.0/30 .
Я для разнообразия ... и для того чтобы это никак не пересекалось с IP в моей достаточно широкой LAN со всякими экспериментами - выберу IPv4 из класса B: 172.16.0.0 — 172.31.255.255 (маска подсети: 255.240.0.0 или /12):Пускай это будут:
192.168.44.1 #Для удаленного vps
192.168.44.2 #Для локальной машины
- 172.16.1.1 #Для удаленного ретранслятора esprimop420
- 172.16.1.2 #Для локальной машины xenix
Код: Выделить всё
[olej@xenix ~]$ sudo ip address add 172.16.1.2/30 dev ipip6
[sudo] пароль для olej:
Код: Выделить всё
[olej@xenix ~]$ ip a s dev ipip6
6: ipip6@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1452 qdisc noqueue state UNKNOWN group default qlen 1000
link/tunnel6 201:1171:48a7:6391:3920:2499:1ebd:757f peer 201:617b:8699:5a7f:356b:1da6:a5d6:c960 permaddr ae4:147d:bc8a::
inet 172.16.1.2/30 scope global ipip6
valid_lft forever preferred_lft forever
inet6 fe80::8e4:14ff:fe7d:bc8a/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
Из этой подсети с такой маской мы можем взять только два адреса (а больше в нашем случае и не нужно). Первый для конца туннеля на
локальной машине, второй для конца туннеля на удаленном vps.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
туннели сквозь Интернет
4.
Чтоб не промахнуться относительно пиров Yggdrasil, начну с этого:
Здесь видно используемый конф., у меня их может быть несколько...
Нужно думать, что в описании имеются в виду внешние IPv4 пиры...
Пробую в качестве XX.XX.XX.XX - 195.123.245.146
На всякий случай (жив ли?):
А по поводу дефаултного интерфейса LAN:
IPv4 роутится с этого хоста через интерфейс enp2s0 на IP шлюза 192.168.1.3
Итого ... решением этой головоломки будет:
Вот эта последняя строка...
Маршрутизация
Тут не очень понятное место...Теперь нам нужно отправить наш ipv4 трафик на vps. На локальной машине нам нужно будет
создать пару маршрутов.
Подставьте вместо XX.XX.XX.XX/32 ip адрес вашего пира, а вместо YY.YY.YY.YY ip адрес
вашего домашнего роутера, wifi0 - замените на интерфейс на котором у вас ваша домашняя
сеть.Тут нужно пояснить. У вас в Yggdrasil прописан как минимум один peer через которого выКод: Выделить всё
sudo ip route add XX.XX.XX.XX/32 via YY.YY.YY.YY dev wifi0
выходите в сеть.
Так вот нам нужно что-бы соединение с этим пиром шло обязательно через "клирнет", не через
сеть Yggdrasil.
Потому-что мы не можем соединиться с сетью Yggdrasil через неё же саму, получается
зацикливание. Из-за этого ничего работать не будет.
Для этого нам и нужен маршрут, который будет всегда "роутить" соединение до пира через
обычный интернет. Как раз это правило маршрутизации нам в этом поможет.
Чтоб не промахнуться относительно пиров Yggdrasil, начну с этого:
Код: Выделить всё
[olej@xenix ~]$ systemctl status --no-pager --full yggdrasil
● yggdrasil.service - yggdrasil
Loaded: loaded (/etc/systemd/system/yggdrasil.service; enabled; preset: disabled)
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: active (running) since Wed 2023-10-25 09:53:14 EEST; 7h ago
Main PID: 1442 (yggdrasil)
Tasks: 16 (limit: 9337)
Memory: 14.5M
CGroup: /system.slice/yggdrasil.service
└─1442 /usr/local/sbin/yggdrasil -useconffile /etc/yggdrasil.conf
окт 25 16:47:11 xenix.localdomain yggdrasil[1442]: 2023/10/25 16:47:11 Disconnected inbound TLS: 21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f@fe80::9bac:3791:1b79:7237, source [fe80::bdc9:d183:f9c0:ff56%enp2s0]:34079; error: read tcp [fe80::bdc9:d183:f9c0:ff56%enp2s0]:34079->[fe80::9bac:3791:1b79:7237%enp2s0]:45111: i/o timeout
окт 25 16:50:51 xenix.localdomain yggdrasil[1442]: 2023/10/25 16:50:51 Connected outbound TLS: 21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f@fe80::9bac:3791:1b79:7237, source [fe80::bdc9:d183:f9c0:ff56%enp2s0]:52061
окт 25 16:50:53 xenix.localdomain yggdrasil[1442]: 2023/10/25 16:50:53 Connected inbound TLS: 21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f@fe80::13f5:9fe2:6393:bf4a, source [fe80::bdc9:d183:f9c0:ff56%enp2s0]:34079
окт 25 16:52:03 xenix.localdomain yggdrasil[1442]: 2023/10/25 16:52:03 Disconnected outbound TLS: 21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f@fe80::9bac:3791:1b79:7237, source [fe80::bdc9:d183:f9c0:ff56%enp2s0]:52061
окт 25 16:52:03 xenix.localdomain yggdrasil[1442]: 2023/10/25 16:52:03 Disconnected inbound TLS: 21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f@fe80::13f5:9fe2:6393:bf4a, source [fe80::bdc9:d183:f9c0:ff56%enp2s0]:34079
окт 25 16:52:04 xenix.localdomain yggdrasil[1442]: 2023/10/25 16:52:04 Failed to dial TLS [fe80::9bac:3791:1b79:7237]:45605: dial tcp [fe80::bdc9:d183:f9c0:ff56%enp2s0]:0->[fe80::9bac:3791:1b79:7237%enp2s0]:45605: connect: connection refused
окт 25 16:52:05 xenix.localdomain yggdrasil[1442]: 2023/10/25 16:52:05 Failed to dial TLS [fe80::9bac:3791:1b79:7237]:45605: dial tcp [fe80::bdc9:d183:f9c0:ff56%enp2s0]:0->[fe80::9bac:3791:1b79:7237%enp2s0]:45605: connect: connection refused
окт 25 16:52:06 xenix.localdomain yggdrasil[1442]: 2023/10/25 16:52:06 Failed to dial TLS [fe80::9bac:3791:1b79:7237]:45605: dial tcp [fe80::bdc9:d183:f9c0:ff56%enp2s0]:0->[fe80::9bac:3791:1b79:7237%enp2s0]:45605: connect: connection refused
окт 25 16:56:39 xenix.localdomain yggdrasil[1442]: 2023/10/25 16:56:39 Connected outbound TLS: 21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f@fe80::13f5:9fe2:6393:bf4a, source [fe80::bdc9:d183:f9c0:ff56%enp2s0]:51851
окт 25 16:56:41 xenix.localdomain yggdrasil[1442]: 2023/10/25 16:56:41 Connected outbound TLS: 21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f@fe80::9bac:3791:1b79:7237, source [fe80::bdc9:d183:f9c0:ff56%enp2s0]:51677
Код: Выделить всё
[olej@xenix ~]$ sudo yggdrasilctl getpeers
[sudo] пароль для olej:
Port Public Key IP Address Uptime RX TX Pr URI
1 2493ffffffffec63eb18516ce50a3dc2667e29d49fb8b9bd7b39ffe94a32c882 202:db60::9ce0:a73d:7498:d7ae 7h48m52s 795kb 446kb 0 tcp://195.123.245.146:7743
2 0000000230d4e2faac3a016ed5a5541a1e89bf6640ffd1e083be71e8dae575db 21e:e795:8e82:a9e2:ff48:952d:55f2:f0bb 7h16m0s 624kb 125kb 0 tcp://51.15.204.214:12345
3 91deffffffffe01abab3514ca4cfc27ec04dc261c801d285f0ce06e3314f8b6e 200:dc42::3fca:8a99:5d66:b660 7h48m52s 529kb 259kb 0 tcp://y.zbin.eu:7743
4 000000c70d438dbb3b7a4712404207070f34e500cd47cef73f26dd54e8f5d591 218:71e5:78e4:8989:b71:db7f:7bf1:f1e1 2h22m59s 40kb 19kb 0 tcp://yggdrasil.su:62486
5 4d758aceabcdd2431559468a27a4cda8d46a3899e27a2d41c26ed599a0b902f0 201:ca29:d4c5:50c8:b6f3:aa9a:e5d7:616c 7h48m52s 43kb 132kb 0 tcp://158.101.229.219:17002
6 00000005d60d541432e5fbabad558d6cca02aaddbb3363fcd3a8421934e4d575 21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f 45m28s 8kb 8kb 0 tls://[fe80::13f5:9fe2:6393:bf4a]:44937
7 00000005d60d541432e5fbabad558d6cca02aaddbb3363fcd3a8421934e4d575 21d:8a7c:aafa:f346:8115:14aa:9ca4:cd7f 45m26s 4kb 4kb 0 tls://[fe80::9bac:3791:1b79:7237]:42657
8 0000000d9a030fa6b7de7f1f1c2b4754e9fb66086cf971f7997576e842902ef4 21c:4cbf:9e0b:2904:301c:1c7a:9715:62c0 7h48m51s 131kb 1010kb 0 tls://[fe80::522d:d0bd:b221:a526%enp2s0]:41241
Нужно думать, что в описании имеются в виду внешние IPv4 пиры...
Пробую в качестве XX.XX.XX.XX - 195.123.245.146
На всякий случай (жив ли?):
Код: Выделить всё
[olej@xenix ~]$ ping -c3 195.123.245.146
PING 195.123.245.146 (195.123.245.146) 56(84) bytes of data.
64 bytes from 195.123.245.146: icmp_seq=1 ttl=54 time=35.5 ms
64 bytes from 195.123.245.146: icmp_seq=2 ttl=54 time=35.4 ms
64 bytes from 195.123.245.146: icmp_seq=3 ttl=54 time=35.3 ms
--- 195.123.245.146 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 35.324/35.408/35.470/0.061 ms
Код: Выделить всё
[olej@xenix IPv6]$ ip a s dev enp2s0
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 90:1b:0e:2b:e1:9c brd ff:ff:ff:ff:ff:ff
inet 192.168.1.20/24 brd 192.168.1.255 scope global noprefixroute enp2s0
valid_lft forever preferred_lft forever
inet6 31c:4cbf:9e0b:2904::4/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::bdc9:d183:f9c0:ff56/64 scope link noprefixroute
valid_lft forever preferred_lft forever
Код: Выделить всё
[olej@xenix IPv6]$ ip r s
default via 192.168.1.3 dev enp2s0 proto static metric 100
172.16.1.0/30 dev ipip6 proto kernel scope link src 172.16.1.2
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.20 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
Итого ... решением этой головоломки будет:
Код: Выделить всё
[code]
[olej@xenix ~]$ sudo ip route add 195.123.245.146/32 via 192.168.1.3 dev enp2s0
[sudo] пароль для olej:
Код: Выделить всё
[olej@xenix IPv6]$ ip r s
default via 192.168.1.3 dev enp2s0 proto static metric 100
172.16.1.0/30 dev ipip6 proto kernel scope link src 172.16.1.2
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.20 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
195.123.245.146 via 192.168.1.3 dev enp2s0
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
туннели сквозь Интернет
5.
1-я строка таблицы.
Маршрутизация
Далее прописываем следующий маршрут. Этот маршрут будет отправлять весь остальной
трафик через наш туннель на vps.Код: Выделить всё
sudo ip route add 0.0.0.0/0 via 192.168.44.2 dev ipip6
Код: Выделить всё
[olej@xenix ~]$ sudo ip route add 0.0.0.0/0 via 172.16.1.2 dev ipip6
[sudo] пароль для olej:
Код: Выделить всё
[olej@xenix ~]$ ip r s
default via 172.16.1.2 dev ipip6
default via 192.168.1.3 dev enp2s0 proto static metric 100
172.16.1.0/30 dev ipip6 proto kernel scope link src 172.16.1.2
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.20 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
195.123.245.146 via 192.168.1.3 dev enp2s0
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость