туннели сквозь Интернет

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

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

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

туннели сквозь Интернет

Непрочитанное сообщение Olej » 26 окт 2023, 16:55

Olej писал(а):
26 окт 2023, 16:35
И у меня есть будущий ретранслятор
На ретрансляторе, симметрично, создаём встречный конец туннеля...
- проверили трафик Yggdrasil к клиенту:

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

olej@esprimop420:~$ ping -c3 201:1171:48a7:6391:3920:2499:1ebd:757f
PING 201:1171:48a7:6391:3920:2499:1ebd:757f(201:1171:48a7:6391:3920:2499:1ebd:757f) 56 data bytes
64 bytes from 201:1171:48a7:6391:3920:2499:1ebd:757f: icmp_seq=1 ttl=64 time=418 ms
64 bytes from 201:1171:48a7:6391:3920:2499:1ebd:757f: icmp_seq=2 ttl=64 time=77.9 ms
64 bytes from 201:1171:48a7:6391:3920:2499:1ebd:757f: icmp_seq=3 ttl=64 time=77.8 ms

--- 201:1171:48a7:6391:3920:2499:1ebd:757f ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 77.839/191.337/418.279/160.472 ms
- строим туннель (точно та же команда, только поменяли местами local и remote IPv6):

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

olej@esprimop420:~$ sudo ip link add name ipip6 type ip6tnl local 201:617b:8699:5a7f:356b:1da6:a5d6:c960 remote 201:1171:48a7:6391:3920:2499:1ebd:757f mode ipip6
[sudo] пароль для olej:
- подняли

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

olej@esprimop420:~$ sudo ip link set ipip6 up
- присвоили IPv4 этому концу:

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

olej@esprimop420:~$ sudo ip address add 172.16.1.1/30 dev ipip6
- проверяем:

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

olej@esprimop420:~$ ip a s dev ipip6
5: ipip6@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 53001 qdisc noqueue state UNKNOWN group default qlen 1000
    link/tunnel6 201:617b:8699:5a7f:356b:1da6:a5d6:c960 peer 201:1171:48a7:6391:3920:2499:1ebd:757f permaddr 62ff:a701:696d::
    inet 172.16.1.1/30 scope global ipip6
       valid_lft forever preferred_lft forever
    inet6 fe80::60ff:a7ff:fe01:696d/64 scope link
       valid_lft forever preferred_lft forever

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

olej@esprimop420:~$ ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
enp3s0           UP             192.168.1.138/24 fe80::921b:eff:fe2b:fe3a/64 
tun0             UNKNOWN        201:617b:8699:5a7f:356b:1da6:a5d6:c960/7 fe80::e32b:a866:58b6:3dd2/64 
ip6tnl0@NONE     DOWN           
ipip6@NONE       UNKNOWN        172.16.1.1/30 fe80::60ff:a7ff:fe01:696d/64 

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

туннели сквозь Интернет

Непрочитанное сообщение Olej » 26 окт 2023, 17:02

Olej писал(а):
26 окт 2023, 16:44
На клиенте:
Olej писал(а):
26 окт 2023, 16:55
На ретрансляторе, симметрично, создаём встречный конец туннеля...
И вот только сейчас проверяем прохождение IPv4 трафика через IPv6 туннель...
- с клиента на ретранслятор:

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

[olej@xenix ~]$ ping -c3 -Iipip6 172.16.1.1
PING 172.16.1.1 (172.16.1.1) from 172.16.1.2 ipip6: 56(84) bytes of data.
64 bytes from 172.16.1.1: icmp_seq=1 ttl=64 time=295 ms
64 bytes from 172.16.1.1: icmp_seq=2 ttl=64 time=71.1 ms
64 bytes from 172.16.1.1: icmp_seq=3 ttl=64 time=72.3 ms

--- 172.16.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 71.056/146.065/294.822/105.188 ms
- с ретранслятора встречно к клиенту:

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

olej@esprimop420:~$ ping -c3 -Iipip6 172.16.1.2
PING 172.16.1.2 (172.16.1.2) from 172.16.1.1 ipip6: 56(84) bytes of data.
64 bytes from 172.16.1.2: icmp_seq=1 ttl=64 time=286 ms
64 bytes from 172.16.1.2: icmp_seq=2 ttl=64 time=70.7 ms
64 bytes from 172.16.1.2: icmp_seq=3 ttl=64 time=78.0 ms

--- 172.16.1.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 70.709/145.059/286.444/100.018 ms
Характерно для Yggdrasil видно прохождение через "мировое пространство": 1-й ping медленный (установлене трассы) + дальше ping-и быстрые...
Т.е. мои 172.16.1.0/30 хосты гонят трайфик ... через фиг знает сколько километров в Интернет пространстве :!: :lol:

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

туннели сквозь Интернет

Непрочитанное сообщение Olej » 26 окт 2023, 17:17

Olej писал(а):
26 окт 2023, 17:02
Т.е. мои 172.16.1.0/30 хосты гонят трайфик ... через фиг знает сколько километров в Интернет пространстве :!: :lol:
Вернуться к началу
Трасса с клиента к ретранслятору:

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

[olej@xenix IPv6]$ traceroute -iipip6 172.16.1.1
traceroute to 172.16.1.1 (172.16.1.1), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  172.16.1.1 (172.16.1.1)  416.552 ms  67.350 ms  67.497 ms
И навстречу:

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

olej@esprimop420:~$ traceroute -iipip6 172.16.1.2
traceroute to 172.16.1.2 (172.16.1.2), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  172.16.1.2 (172.16.1.2)  349.596 ms  69.227 ms  70.231 ms
Как всегда в Yggdrasil промежуточные ноды не отвечают IP, но они фиксируются...

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

туннели сквозь Интернет

Непрочитанное сообщение Olej » 26 окт 2023, 17:21

Olej писал(а):
26 окт 2023, 17:02
- с клиента на ретранслятор
И вот как теперь выглядит таблица роутинга ядра на клиенте (на сервере будет аналогично - пока у нас всё симметрично):

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

[olej@xenix IPv6]$ route -46n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.3     0.0.0.0         UG    100    0        0 enp2s0
172.16.1.0      0.0.0.0         255.255.255.252 U     0      0        0 ipip6
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp2s0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
200::/7                        ::                         U    256 9      0 tun0
fe80::/64                      ::                         U    256 2      0 tun0
fe80::/64                      ::                         U    256 1      0 ipip6
fe80::/64                      ::                         U    1024 6      0 enp2s0
::/0                           ::                         !n   -1  1      0 lo
::1/128                        ::                         Un   0   6      0 lo
201:1171:48a7:6391:3920:2499:1ebd:757f/128 ::                         Un   0   10      0 tun0
fe80::4d63:6d0:bffc:d07b/128   ::                         Un   0   2      0 tun0
fe80::bdc9:d183:f9c0:ff56/128  ::                         Un   0   6      0 enp2s0
fe80::c06c:a7ff:fea8:38d1/128  ::                         Un   0   2      0 ipip6
ff00::/8                       ::                         U    256 9      0 enp2s0
ff00::/8                       ::                         U    256 2      0 tun0
ff00::/8                       ::                         U    256 1      0 ipip6
::/0                           ::                         !n   -1  1      0 lo
Это поизучать любопытно :!:
Или так:

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

[olej@xenix IPv6]$ ip -4 r
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 

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

[olej@xenix IPv6]$ ip -6 r
200::/7 dev tun0 proto kernel metric 256 pref medium
fe80::/64 dev tun0 proto kernel metric 256 pref medium
fe80::/64 dev ipip6 proto kernel metric 256 pref medium
fe80::/64 dev enp2s0 proto kernel metric 1024 pref medium

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

туннели сквозь Интернет

Непрочитанное сообщение Olej » 26 окт 2023, 19:18

Olej писал(а):
26 окт 2023, 17:02
- с клиента на ретранслятор:
Причём (как это видно и из таблицы роутинга), ping в 172.16.1.2.0/30 роутится в ipip6 и без явного указания интерфейса:

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

[olej@xenix ~]$ ping -c3 172.16.1.1
PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data.
64 bytes from 172.16.1.1: icmp_seq=1 ttl=64 time=434 ms
64 bytes from 172.16.1.1: icmp_seq=2 ttl=64 time=75.7 ms
64 bytes from 172.16.1.1: icmp_seq=3 ttl=64 time=73.7 ms

--- 172.16.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 73.673/194.377/433.768/169.276 ms
При том, что ping непосредственно через Ethernet сквозь LAN, естественно, не идёт:

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

[olej@xenix ~]$ ping -c3 -Ienp2s0 172.16.1.1
PING 172.16.1.1 (172.16.1.1) from 192.168.1.20 enp2s0: 56(84) bytes of data.

--- 172.16.1.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2065ms
Это похоже на то что хотелось бы получить :!:
С контролем действия.

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

туннели сквозь Интернет

Непрочитанное сообщение Olej » 26 окт 2023, 21:13

Olej писал(а):
26 окт 2023, 16:21
это будет задача №1
Задача №2 - это явное перенаправление роутинга Yggdrasil внешних пиров у клиента - через дефаултный шлюз LAN :!:

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

[olej@xenix ~]$ sudo yggdrasilctl getPeers | grep tcp:// | cut -f8
tcp://195.123.245.146:7743 
tcp://yggdrasil.su:62486   
tcp://y.zbin.eu:7743       
tcp://51.15.204.214:12345  
tcp://158.101.229.219:17002

От автора оригинальной статьи:
Подставьте вместо XX.XX.XX.XX/32 ip адрес вашего пира, а вместо YY.YY.YY.YY ip адрес
вашего домашнего роутера, wifi0 - замените на интерфейс на котором у вас ваша домашняя
сеть.

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

sudo ip route add XX.XX.XX.XX/32 via YY.YY.YY.YY dev wifi0
Тут нужно пояснить. У вас в Yggdrasil прописан как минимум один peer через которого вы
выходите в сеть.
Так вот нам нужно что-бы соединение с этим пиром шло обязательно через "клирнет", не через
сеть Yggdrasil.
Потому-что мы не можем соединиться с сетью Yggdrasil через неё же саму, получается
зацикливание. Из-за этого ничего работать не будет.
Для этого нам и нужен маршрут, который будет всегда "роутить" соединение до пира через
обычный интернет. Как раз это правило маршрутизации нам в этом поможет.
Тут у нас прототипом (чтобы не гадать и не ошибиться) будет дефаултная строка (Destination 0.0.0.0) роутинга в LAN на хосте клиента:

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

[olej@xenix ~]$ route -4n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.3     0.0.0.0         UG    100    0        0 enp2s0
172.16.1.0      0.0.0.0         255.255.255.252 U     0      0        0 ipip6
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp2s0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

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

туннели сквозь Интернет

Непрочитанное сообщение Olej » 26 окт 2023, 21:29

Olej писал(а):
26 окт 2023, 21:13
Тут нужно пояснить. У вас в Yggdrasil прописан как минимум один peer через которого вы
выходите в сеть.
Так вот нам нужно что-бы соединение с этим пиром шло обязательно через "клирнет", не через
сеть Yggdrasil.
Я совсем не уверено, что нужно прописать только один внешний пир...
В моём случае, выше, при активизации туннеля 4 остальные пира будут ходить по кругу ("через задницу" :lol: ) ... это возможно будет работающее. Но рисковать для начала не хочется. :-(
Доразрешаю в IPv4 неразрешённые URL:

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

[olej@xenix ~]$ host yggdrasil.su
yggdrasil.su has address 94.130.176.250
yggdrasil.su mail is handled by 10 mail.yggdrasil.su.

[olej@xenix ~]$ host y.zbin.eu
y.zbin.eu has address 77.247.225.234
Итого имею джентльменский набор IPv4 которые нужно принудительно направить на роутер из LAN в Интернет:
195.123.245.146
yggdrasil.su -> 94.130.176.250
y.zbin.eu -> 77.247.225.234
51.15.204.214
158.101.229.219
(Все из них я естественно проверил ping на доступность + на время ответа ... но это уже не существенные мелочи).

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

туннели сквозь Интернет

Непрочитанное сообщение Olej » 26 окт 2023, 21:44

Olej писал(а):
26 окт 2023, 21:29
джентльменский набор IPv4 которые нужно принудительно направить на роутер из LAN в Интернет:

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

[olej@xenix ~]$ sudo ip route add 195.123.245.146/32 via 192.168.1.3 dev enp2s0

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

[olej@xenix ~]$ sudo ip route add 94.130.176.250/32 via 192.168.1.3 dev enp2s0

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

[olej@xenix ~]$ sudo ip route add 77.247.225.234/32 via 192.168.1.3 dev enp2s0

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

[olej@xenix ~]$ sudo ip route add 51.15.204.214/32 via 192.168.1.3 dev enp2s0

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

[olej@xenix ~]$ sudo ip route add 158.101.229.219/32 via 192.168.1.3 dev enp2s0
Вот так теперь:

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

[olej@xenix ~]$ route -4n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.3     0.0.0.0         UG    100    0        0 enp2s0
51.15.204.214   192.168.1.3     255.255.255.255 UGH   0      0        0 enp2s0
77.247.225.234  192.168.1.3     255.255.255.255 UGH   0      0        0 enp2s0
94.130.176.250  192.168.1.3     255.255.255.255 UGH   0      0        0 enp2s0
158.101.229.219 192.168.1.3     255.255.255.255 UGH   0      0        0 enp2s0
172.16.1.0      0.0.0.0         255.255.255.252 U     0      0        0 ipip6
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp2s0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
195.123.245.146 192.168.1.3     255.255.255.255 UGH   0      0        0 enp2s0
По геометрии (трассе) Yggdrasil ничего не заметил:

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

[olej@xenix ~]$ sudo yggdrasilctl getSelf
Build name:     yggdrasil
Build version:  0.4.7
IPv6 address:   201:1171:48a7:6391:3920:2499:1ebd:757f
IPv6 subnet:    301:1171:48a7:6391::/64
Coordinates:    [1 181 360 147]
Public key:     7ba3add6271bb1b7f6d9b850a2a00b57db7179a82d162afc0e15889f62aa0773
... потому что роутился туда же - по дефаулту, а теперь - принудительно.
Но при включении туннеля разница может быть :!:

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

туннели сквозь Интернет

Непрочитанное сообщение Olej » 26 окт 2023, 21:50

Olej писал(а):
26 окт 2023, 21:44
По геометрии (трассе) Yggdrasil ничего не заметил:
Но проверю, что не нарушил работу IPv6 хоста ... - ping на URL этого форума, зарегистрированный в EmerDNS (OpenNIC DNS и EmerCoin) ... на расстоянии >4000 км:

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

[olej@xenix ~]$ ping -c3 ygg.linux-ru.lib
PING ygg.linux-ru.lib(221:58c9:9a6:99be:f3d:c1ac:2b5b:9771) 56 data bytes
64 bytes from 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771: icmp_seq=1 ttl=64 time=138 ms
64 bytes from 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771: icmp_seq=2 ttl=64 time=137 ms
64 bytes from 221:58c9:9a6:99be:f3d:c1ac:2b5b:9771: icmp_seq=3 ttl=64 time=137 ms

--- ygg.linux-ru.lib ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 137.016/137.335/137.662/0.263 ms
Всё ходит :!:

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

туннели сквозь Интернет

Непрочитанное сообщение Olej » 26 окт 2023, 22:21

Olej писал(а):
26 окт 2023, 21:13
Задача №2
Задача №3
Настройка iptables
Теперь мы напишем правила для iptables , которые проведут наш трафик из туннеля в интернет.
Теперь оставим на время в покое клиента, и перейдём мордовать ретранслятор...
Только у меня не iptables, а nftables, см. nftables вместо iptables:

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

root@esprimop420:~# uname -r
6.1.0-12-amd64

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

 
[code] 
root@esprimop420:~# iptables --version
iptables v1.8.9 (nf_tables)

Поэтому я буду рассчитывать на совместимость (синтаксиса команд iptables) + проделаю это всё не спеша, с контролем результатов, но используя для контроля команды nftables.
Исходное состояние таблиц:

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

olej@esprimop420:~$ sudo nft list tables
table ip filter
table ip6 filter

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

olej@esprimop420:~$ sudo nft list table ip filter
table ip filter {
}

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

olej@esprimop420:~$ sudo nft list table ip6 filter
table ip6 filter {
}

Ответить

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

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

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