Тунелирование и частные сети

TODO


склад:

настройка IPIP

сервер:

table ip nat {
        chain postrouting {
                type nat hook postrouting priority srcnat + 1; policy accept;
                ip saddr 10.0.0.0/8 oif "eth0" masquerade # для всех сетей
        }
}

# ip tunnel add hole mode ipip remote 10.2.2.1 local 10.1.1.1
# ip l set hole up
# ip addr add dev hole 10.10.10.1/24
# + интернет и внутренняя сеть 10.1.1/24

# в настройках внутренней сети
[Route]
Destination=10.2.2.0/24
Gateway=10.1.1.2

роутер:

две сети 10.2.2/24 и 10.1.1/24

запрет TCP (потом):
# nft add rule inet filter forward ip protocol tcp reject

клиент:

сеть 10.2.2.1

подключаем ipip

# так же, как на сервере, только меняем local и remote ☺
# IP 10.10.10.2
ping 10.10.10.1

См. на MTU: мы же запихнули IP в IP ☺

смотрим на router пакеты в туннеле;

# date | netcat ya.ru 80 — (всё ещё работает по-старому)

Вот уже почти VPN!

Туннель как маршрут по умолчанию

Проблема превращения старого маршрута в маршрут до tunnel endpoint

запрещаем на router tcp

DNS (через UDP) работает, netcat ya.ru 80 — нет

l2tp — фреймы в IP

всё по ip-l2tp с инкапсуляцией в UDP

# ip l2tp show tunnel
# ip l2tp show session

Главная фишка, если применять bridge («Configure as bridged interfaces» в man-е): на сервере интерфейс один и IP у него тоже один.

Wireguard

Сайт, и конечно Arch-вики

# wg genkey | tee /dev/stderr | wg pubkey     # для копипасты

Минимальная настройка:

сервер:

70-wg.netdev:[NetDev]
70-wg.netdev:Name        = wg
70-wg.netdev:Kind        = wireguard
70-wg.netdev:
70-wg.netdev:[WireGuard]
70-wg.netdev:ListenPort  = 51820
70-wg.netdev:PrivateKey  = сервера, никому не показывать
                           возможно, лучше  PrivateKeyFile =
70-wg.netdev:# PublicKey   = сервера, просто лежит тут прозапас
70-wg.netdev:
70-wg.netdev:[WireGuardPeer]
70-wg.netdev:AllowedIPs  = 192.168.111.0/24
70-wg.netdev:PublicKey   = клиента

70-wg.network:[Match]
70-wg.network:Name        = wg
70-wg.network:
70-wg.network:[Network]
70-wg.network:Address     = 192.168.111.1/24

Клиент:

90-wg.netdev:[NetDev]
90-wg.netdev:Name        = wg
90-wg.netdev:Kind        = wireguard
90-wg.netdev:
90-wg.netdev:[WireGuard]
90-wg.netdev:PrivateKey  = этого клиента
90-wg.netdev:# PublicKey   = этого клиента, прозапас
90-wg.netdev:
90-wg.netdev:[WireGuardPeer]
90-wg.netdev:AllowedIPs  = 192.168.111.0/24
90-wg.netdev:PublicKey   = сервера
90-wg.netdev:Endpoint    = 10.1.1.1:51820
90-wg.network:[Match]
90-wg.network:Name        = wg
90-wg.network:
90-wg.network:[Network]
90-wg.network:Address     = 192.168.111.5/24

TODO

Таки проблема превращения старого маршрута в маршрут до tunnel endpoint

https://lists.zx2c4.com/pipermail/wireguard/2022-January/007403.html

Всякое