Тунелирование и частные сети
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!
на сервере — по интерфейсу для каждого клиента ☹, и что хуже — по паре IP-адресов. Если клментов много, этих IP-адресову него будет…
- ⇒ для p2p
- нет шифрования и авторизации
Туннель как маршрут по умолчанию
Проблема превращения старого маршрута в маршрут до tunnel endpoint
запрещаем на router tcp
DNS (через UDP) работает, netcat ya.ru 80 — нет
- добавляем 1:1 маршрут через router на server (бывший default router)
- удаляем default route
- добавляем default route через 10.10.10.1
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
# 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
Всякое
- … тысячи их