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

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

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

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

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

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

Olej писал(а):
25 окт 2023, 18:06
1-я строка таблицы
И вот в этом месте ... у меня, естественно, полностью разлетелся Интернет, так что я даже сообщение предыдущее не смог дослать... :-o :twisted:
Здесь спасло только удаление последнего маршрута:

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

[olej@xenix ~]$ sudo ip route del 0.0.0.0/0 via 172.16.1.2 dev ipip6
[sudo] пароль для olej: 

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

[olej@xenix ~]$ 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 
С тем что дефаултный роутинг пойдёт всё таки через аппаратный GPON роутер 192.168.1.3:

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

[olej@xenix ~]$ traceroute 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
 1  GPON (192.168.1.3)  3.391 ms  3.350 ms  3.334 ms
 2  10.0.53.1 (10.0.53.1)  4.695 ms  4.680 ms  4.664 ms
 3  172.16.1.254 (172.16.1.254)  4.703 ms  4.632 ms  4.664 ms
 4  31-202-12-165-kh.maxnet.ua (31.202.12.165)  13.918 ms  13.945 ms  13.929 ms
 5  cloudflare-ix.giganet.ua (185.1.62.76)  13.995 ms * *
 6  one.one.one.one (1.1.1.1)  13.950 ms  12.490 ms  12.427 ms
Пока ... А через туннель я его направлю последним шагом...

P.S. Тут нас подстерегает 1-й облом...
Кроме того, команда должна быть, кажется, не такая как у автора, а именно роутинг на ретранслятор (vps), .1 а не .2:

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

[olej@xenix ~]$ sudo ip route del 0.0.0.0/0 via 172.16.1.1 dev ipip6

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

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

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

6.
Удаленный VPS
Перехожу на хост-ретранслятор (всё это делается по SSH в соседних терминалах...):
Создание туннеля
Переходим к нашей vps. Настроим туннель со стороны vps. Настройка будет точно такая же,
разница только в ip адресах.
При создании туннеля нужно поменять ipv6 адреса местами Local IP <---> Remote IP

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

sudo ip link add name ipip6 type ip6tnl local 200:d4a5:ec3f:5914:274c:8f70::1 \
remote 200:d4a5:ec3f:5914:274c:8f70::660 mode ipip6
До:

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

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::fe72:29a9:ab01:f3ef/64 
После:

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

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

olej@esprimop420:~$ echo $?
0

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

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::fe72:29a9:ab01:f3ef/64 
ip6tnl0@NONE     DOWN           
ipip6@NONE       DOWN           

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

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

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

Olej писал(а):
25 окт 2023, 18:24
Перехожу на хост-ретранслятор (всё это делается по SSH в соседних терминалах...):
7.
Со стороны vps так же назначаем ipv4 на интерфейс:

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

sudo ip address add 192.168.44.1/30 dev ipip6

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

olej@esprimop420:~$ sudo ip address add 172.16.1.1/30 dev ipip6

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

olej@esprimop420:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 90:1b:0e:2b:fe:3a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.138/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
       valid_lft 99426sec preferred_lft 99426sec
    inet6 fe80::921b:eff:fe2b:fe3a/64 scope link 
       valid_lft forever preferred_lft forever
8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet6 201:617b:8699:5a7f:356b:1da6:a5d6:c960/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::fe72:29a9:ab01:f3ef/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
9: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd :: permaddr f6d4:dd0d:de2c::
10: ipip6@NONE: <POINTOPOINT,NOARP> mtu 53001 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 201:617b:8699:5a7f:356b:1da6:a5d6:c960 peer 201:1171:48a7:6391:3920:2499:1ebd:757f permaddr 7678:5c40:d76f::
    inet 172.16.1.1/30 scope global ipip6
       valid_lft forever preferred_lft forever

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

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

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

8.

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

Настройка iptables
Теперь мы напишем правила для iptables , которые проведут наш трафик из туннеля в
интернет.
Вместо eth0 подставьте интерфейс с которого у вас выход в интернет.

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

# Эти два правила разрешат пересылку пакетов между интерфейсами
sudo iptables -A FORWARD -i eth0 -o ipip6 -j ACCEPT
sudo iptables -A FORWARD -i ipip6 -o eth0 -j ACCEPT

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

# Это правило подменит локальный ip адрес (192.168.44.2) при выходе из интерфейса
eth0 на внешний ip
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

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

olej@esprimop420:~$ ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 90:1b:0e:2b:fe:3a brd ff:ff:ff:ff:ff:ff
8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 500
    link/none 
9: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/tunnel6 :: brd :: permaddr f6d4:dd0d:de2c::
10: ipip6@NONE: <POINTOPOINT,NOARP> mtu 53001 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/tunnel6 201:617b:8699:5a7f:356b:1da6:a5d6:c960 peer 201:1171:48a7:6391:3920:2499:1ebd:757f permaddr 7678:5c40:d76f::

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

olej@esprimop420:~$ sudo iptables -A FORWARD -i enp3s0 -o ipip6 -j ACCEPT

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

olej@esprimop420:~$ sudo iptables -A FORWARD -i ipip6 -o enp3s0 -j ACCEPT

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

olej@esprimop420:~$ sudo iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE

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

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

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

Olej писал(а):
25 окт 2023, 18:35
Теперь мы напишем правила для iptables
Только в новых дистрибктивах это не работает, см. nftables вместо iptables

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

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

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

Проверка работоспособности
Всё, туннель у нас должен работать. Для проверки работоспособности "попингуйте" друг друга
через туннельные ip:

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

ping 192.168.44.1 #На локальной машине
ping 192.168.44.2 #На удаленной машине
Если всё "пингуется" в обе стороны, то туннель успешно работает. Далее проверьте, что
интернет работает именно через туннель.

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

# Здесь мы видим что трафик уходит через ip нашего туннеля
> traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 10.100.44.1 93.791 ms 98.394 ms 98.443 ms
2 49.11.8.1 98.441 ms 98.434 ms 98.419 ms
...
Пока, естественно, ничего не работает... :evil:

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

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

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

Olej писал(а):
25 окт 2023, 18:36
Только в новых дистрибктивах это не работает

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

root@esprimop420:~# nft list tables
table ip filter
table ip nat

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

root@esprimop420:~# nft list table ip nat
# Warning: table ip nat is managed by iptables-nft, do not touch!
table ip nat {
    chain POSTROUTING {
        type nat hook postrouting priority srcnat; policy accept;
        oifname "enp3s0" counter packets 1639 bytes 112309 masquerade
        oifname "enp3s0" counter packets 0 bytes 0 masquerade
        oifname "enp3s0" counter packets 0 bytes 0 masquerade
    }
}

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

root@esprimop420:~# nft list table ip filter
table ip filter {
	chain FORWARD {
		type filter hook forward priority filter; policy accept;
		iifname "enp3s0" oifname "ipip6" counter packets 0 bytes 0 accept
		iifname "ipip6" oifname "enp3s0" counter packets 0 bytes 0 accept
		iifname "enp3s0" oifname "ipip6" counter packets 0 bytes 0 accept
		iifname "ipip6" oifname "enp3s0" counter packets 0 bytes 0 accept
	}
}
И похоже что фильтр как-раз работает нормально...

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

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

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

Olej писал(а):
25 окт 2023, 18:38
Пока, естественно, ничего не работает...
Теперь то же самое (туннель IPIP ... будут и другие), но тщательнее...
И не по схеме публикации, а ... по уму :lol: : делаем каждый этап + ищем возможность проверки положительного результата этапа.
Olej писал(а):
25 окт 2023, 16:58
Создадим туннель
Вот я хочу первейшим делом просто создать туннель IPv6 для 2-х локальных интерфейсов IPv4...
У меня есть будущий клиент (имя хоста xenix):

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

[olej@xenix ~]$ uname -a
Linux xenix.localdomain 6.5.7-200.fc38.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 11 04:07:58 UTC 2023 x86_64 GNU/Linux

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

    
[olej@xenix ~]$ lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: Fedora
Description:    Fedora release 38 (Thirty Eight)
Release:        38
Codename:       ThirtyEight
И у меня есть будущий ретранслятор (имя хоста esprimop420):

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

olej@esprimop420:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 12 (bookworm)
Release:        12
Codename:       bookworm

olej@esprimop420:~$ uname -a
Linux esprimop420 6.1.0-12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.52-1 (2023-09-07) x86_64 GNU/Linux
- дистрибутивы, ядро - разные ... чтоб жизнь малиной не казалась...
- на обоих запущены IPv6 Yggdrasil ...
- причём, в конфигурациях убраны локальные IPv6 пиры + оставлены только внешние IPv4 пиры.... (это для чистоты эксперимента ... поскольку оба эти хоста находятся у меня в LAN ... пока :lol: )

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

[olej@xenix ~]$ grep -v ^# /etc/yggdrasil.conf | grep " MulticastInterfaces:" -A1
  MulticastInterfaces:
  []
И эта цель (туннель) это будет задача №1, которую нужно сделать и проверить, убедится.

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

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

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

Olej писал(а):
26 окт 2023, 16:21
У меня есть будущий клиент (имя хоста xenix)

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

[olej@xenix IPv6]$ ip -6 a s dev tun0
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 qdisc fq_codel state UNKNOWN group default qlen 500
    inet6 201:1171:48a7:6391:3920:2499:1ebd:757f/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::4d63:6d0:bffc:d07b/64 scope link stable-privacy proto kernel_ll 
       valid_lft forever preferred_lft forever
Olej писал(а):
26 окт 2023, 16:21
И у меня есть будущий ретранслятор (имя хоста esprimop420)

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

olej@esprimop420:~$ ip -6 a s dev tun0
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 53049 qdisc fq_codel state UNKNOWN group default qlen 500
    inet6 201:617b:8699:5a7f:356b:1da6:a5d6:c960/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::e32b:a866:58b6:3dd2/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
Между ними нужно проложить IPv6 туннель, для частных "серых" IPv4, из подсети 172.16.1.0/30 (2-х хостов на 2-х концах туннеля в этой подсети более чем достаточно!) - между которыми трафик станет ходить через мировое пространство Yggdrasil :lol: , а не через LAN.

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

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

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

Olej писал(а):
26 окт 2023, 16:35
У меня есть будущий клиент
На клиенте:
- не лишне проверить IPv6 трафик к ретранслятору:

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

[olej@xenix ~]$ ping -c3 201:617b:8699:5a7f:356b:1da6:a5d6:c960
PING 201:617b:8699:5a7f:356b:1da6:a5d6:c960(201:617b:8699:5a7f:356b:1da6:a5d6:c960) 56 data bytes
64 bytes from 201:617b:8699:5a7f:356b:1da6:a5d6:c960: icmp_seq=1 ttl=64 time=71.4 ms
64 bytes from 201:617b:8699:5a7f:356b:1da6:a5d6:c960: icmp_seq=2 ttl=64 time=70.9 ms
64 bytes from 201:617b:8699:5a7f:356b:1da6:a5d6:c960: icmp_seq=3 ttl=64 time=71.1 ms

--- 201:617b:8699:5a7f:356b:1da6:a5d6:c960 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 70.934/71.139/71.400/0.194 ms
- строим туннель...

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

[olej@xenix ~]$ ip -br a show tun0
tun0             UNKNOWN        201:1171:48a7:6391:3920:2499:1ebd:757f/7 fe80::4d63:6d0:bffc:d07b/64

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

[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 ~]$ sudo ip link set ipip6 up
- присвоили IPv4 конец

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

[olej@xenix ~]$ sudo ip address add 172.16.1.2/30 dev ipip6
- проверяем

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

[olej@xenix ~]$ ip a s dev ipip6
7: ipip6@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 53001 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 c26c:a7a8:38d1::
    inet 172.16.1.2/30 scope global ipip6
       valid_lft forever preferred_lft forever
    inet6 fe80::c06c:a7ff:fea8:38d1/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever

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

[olej@xenix IPv6]$ ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
enp2s0           UP             192.168.1.20/24 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::4d63:6d0:bffc:d07b/64 
ip6tnl0@NONE     DOWN           
ipip6@NONE       UNKNOWN        172.16.1.2/30 fe80::c06c:a7ff:fea8:38d1/64 

Ответить

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

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

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