1

Temat: Routing po Tailscale dla klientów LAN

Mam pewien problem z dostawcą internetu, którego chwilowo inaczej niż poniższe nie rozwiążę.

Router (gateway) jest podpięty do sieci na interfejsie wan i ma dostępny, zapięty również interfejs tailscale.
Oczekiwaniem jest, aby ruch pochodzący z VLAN 'LAN', który jest kierowany do publicznego zareksu xx.yy.100.0/22 był kierowany przez konkretnego hosta w sieci tailscale (100.121.x.y).

Nie chcę na sztywno ustawiać exit-node w tailscale na tego konkretnego hosta, gdyż nie wykluczam że w przyszłości będę potrzebował przekierować inny ruch przez innego hosta sieci tailscale.
W jaki sposób prawidłowo podejść do skonfigurowania tego przejścia?

PBR na starcie trochę przygniata konfiguracyjnie, natomiast wydaje się być nadmiarowe.
Z drugiej strony próba konfiguracji route via LuCI spełza na niepowodzeniach.
Pytanie które wiele podpowie, to czy możliwe jest routowanie ruchu po adresach IP "tailscaleowych" bez wykorzystania mechanizmu rozgłaszanych przez nich subnetów.

2

Odp: Routing po Tailscale dla klientów LAN

https://eko.one.pl/?p=openwrt-routing
https://eko.one.pl/forum/viewtopic.php? … 74#p309674

https://openwrt.org/docs/guide-user/net … pbr_netifd

?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Routing po Tailscale dla klientów LAN

Pora była późna, szyny były złe.
Wszystkie linki podane przez Ciebie widziałem.

Tymczasowe rozwiązanie, które nie satysfakcjonuje mnie w pełni (bo nie wykorzystuje mechanizmów które rozumiem, a jakieś gotowce):
1. Na tailscale-exit node dodałem rozgłaszany route na adresację publiczną (xx.yy.100.0/22) i zezwoliłem w panelu tailscale na ogłaszanie go
2. Na tailscale-routerze dodałem "ip route add x.y.100.0/22 dev tailscale0"
3. Przepuściłem na rule firewalla ruch z LAN do Tailscale

Docelowo podejmę pewnie próbę postawienia osobnego serwera wireguard, podpięcia klienta i routowania tego w np. podlinkowany sposób. Póki co działa, a na tym mi głównie zależało.

4 (edytowany przez andrut 2025-01-16 00:08:17)

Odp: Routing po Tailscale dla klientów LAN

Rozwiązanie tymczasowe było dobre do rozwiązania jednego problemu, ale drugi jest nadal aktualny i po dwóch nocach prób nadal coś mi umyka.

Chciałbym dwa hosty w lokalizacji A przeroutować z całym ruchem przez exit-node Tailscale w lokalizacji B.
Mogę je wskazać po adresach IP w LAN, mogę im utworzyć dodatkową sieć - nie ma to znaczenia (mam pełną dowolność).
Wszystkie próby wyroutowania ruchu z nich są bez efektu. Jedyny póki co działający sposób to uruchomienie tailscale z --exit-node, ale wtedy tailscale automatycznie wyroutowuje cały ruch, także z pozostałej części LAN która miała zostać nietknięta.

Docelowy exit-node w lokalizacji B udostępnia subnet 192.168.0.1/32, gdzie jest gateway. Próby skorzystania w route z tego gw nie przynoszą efektu, a wskazanie bezpośrednio ip wewnętrznego tailscale tego exit node wskazuje, że ts nie bardzo wie co z tym ruchem zrobić.

PBR wyklikiwany w LUCI też nie przyniósł efektów i kończą mi się pomysły jak to skutecznie zrobić.

Edit:
- mam dość rozbudowaną sieć TS i w związku z tym obawy o publikowanie na potrzeby wyłącznie dwóch klientów podsieci 0.0.0.0/0 na jednym z exit node. mam też małe obawy przed rozsypaniem się sieci/przeroutowaniem ruchu i to będę testował dopiero na końcu ;-)

5

Odp: Routing po Tailscale dla klientów LAN

Aby Tailscale daemon był w stanie przekierować "cały" ruch przez exit node musisz go uruchomić z opcją --exit-node, inaczej wewnętrznie nie będzie wiedział do którego hosta puścić pakiety.

Tailsclale wstawia swoje reguły trasowania i jest niestety pod tym względem praktycznie niekonfigurowalny. Regułki po włączeniu --exit-node wyglądają tak:

# ip rule
0:      from all lookup local
5210:   from all fwmark 0x80000/0xff0000 lookup main
5230:   from all fwmark 0x80000/0xff0000 lookup default
5250:   from all fwmark 0x80000/0xff0000 unreachable
5270:   from all lookup 52
32766:  from all lookup main
32767:  from all lookup default

W związku z tym jeśli chciałbym przekierować przez exit-node ruch wyłącznie od hosta 192.168.0.10, dopisałbym 2 regułki: po pierwsze, kieruj ruch z wybranego hosta do Tailscale (tabela 52):

# ip rule add from 192.168.0.10/32 lookup 52 prio 5200

a pozostały ruch normalnie - tutaj priorytet 5209, żeby "ominąć" Tailscale:

# ip rule add lookup main prio 5209

Możesz spróbować wklepać to ręcznie i zobaczyć czy w ten sposób działa, jak oczekujesz. Niestety nie pomogę w tym gdzie takie regułki najlepiej wpisać na stałe w OpenWRT.

6

Odp: Routing po Tailscale dla klientów LAN

Spróbowałem na szybko - zdalnie i po ssh tailscale. Wyrzuciło mnie z połączenia, więc jak będę na miejscu to zweryfikuję dokładniej.
Wydaje mi się, że potrzebne będzie doprecyzowanie pozostałego routingu żeby to działało jak należy.
Ale weryfikowałem routing startowy to jest taki jak napisaleś.

7

Odp: Routing po Tailscale dla klientów LAN

Sprawdziłem lokalnie.
Musiałem uporać się jeszcze z DNS-em - ten jest podmieniany na tailscaleowy (--accept-dns=false).

Zostaje jeden "problem" - siadł dostęp po tailscale z zewnątrz, tj. ssh do tego routera jest już niemożliwe.
Domyślam się, że trzeba dodać do tablicy routingu adresację tailscale?
Całość jest na okrętkę, ale najbliżej działającego rozwiązania póki co.

8

Odp: Routing po Tailscale dla klientów LAN

dostęp do  komputerów w lan

tailscale up --accept-routes --advertise-exit-node --advertise-routes=10.0.0.0/24 --netfilter-mode=off 

bez dostępu ;

tailscale up --netfilter-mode=off --accept-routes --advertise-exit-node

9 (edytowany przez andrut 2025-01-19 00:56:13)

Odp: Routing po Tailscale dla klientów LAN

Mi nie zależy na dostępie do sieci LAN exit-node (to wiem jak osiągnąć).
Chodzi o to, aby przeroutować przez exit-node do Internetu wyłącznie dwa adresy IP z obecnej sieci i nic poza tym.

Edit:
Dopiero zauważyłem że przywołujesz `netfilter-mode`. Z manuala:

--netfilter-mode (Linux only) Advanced feature for controlling the degree of automatic firewall configuration. Values are either "off", "nodivert", or "on". Defaults to "on", except for Synology which defaults to "off". Setting this flag to "off" disables all management of netfilter. Setting to "nodivert" creates and manages Tailscale sub-chains, but leaves the calling of those chains up to the administrator. Setting to "on" means using full management of Tailscale's rules. Note that if you set --netfilter-mode to "off" or "nodivert", it is your responsibility to configure the firewall securely for Tailscale traffic. We recommend using the rules installed by --netfilter-mode=on as a starting point.

Przetestuję lokalnie.

Edit 2:
Bez sukcesu, te same objawy - działa lokalnie, "siada" komunikacja tailscale i tym samym zdalne zarządzanie

10

Odp: Routing po Tailscale dla klientów LAN

Metoda prób i błędów nie pomaga, progresu brak.
Gdyby nie to, że mam po dwóch stronach klientów za NAT - zestawiłbym to na wireguard.
Z metod 'będzie działać no ale nie' na razie na stole mam spięcie wireguarda (albo może nawet GRE) po tailscale bez exit-node.

Czy ktoś ma lepszy pomysł? Czy inwazyjności w routingu tailscale nie da się w łatwy sposób uniknąć?