1 (edytowany przez miguelos 2018-04-13 13:18:40)

Temat: Policy Based Routing (PBR) + VPN

Witam

Wybaczcie, jeśli temat był gdzieś poruszany, ale nie znalazłem tego na forum

Chciałem zestawić jedną z prostszych konfiguracji VPN (tak myślę), tj :
- tunel między dwoma routerami : WDR3600 (LAN 10) <-> Archer C5 (LAN 192)

Adresacja LAN obu sieci jest inna, dostęp między LANami możliwy, ale nie niezbędny (widziałem, że to jedna opcja w cfg)
Sęk w tym, że chciałem by jeden (i tylko jeden) klient z LAN10 korzystał z łącza internetowego przez tunel (czyli z Archera C5)

znalazłem jakieś podobne dyskusje :
https://forum.lede-project.org/t/vpn-po … ive-1/1422
https://forum.lede-project.org/t/policy … ci-ui/5390

Mimo wszystko miło by było gdyby ktoś się wypowiedział, kto zestawiał coś podobnego, może jest to możliwe zamiast ww. skryptów ?
Pytania :
- jakie będzie obciążenie CPU dla takiego rozwiązania ?
- czy można jakoś łatwo limitować prędkość tego jednego klienta z LAN 10 ? (bo de facto będzie mi zapychał upload na C5)

sidenote : szukam i widze porownania wydajnosci miedzy openvpn i wireguard, chyba od razu bede probowac to drugie big_smile

2 (edytowany przez Jan89 2018-04-11 00:46:36)

Odp: Policy Based Routing (PBR) + VPN

Robiłem site-to-site vpn pomiędzy tplinkiem 4300 z openwrt a linuksem. Wprawdzie cały setup oparty jest o strongswana, więc coś innego niż openVPN ale wydajnośc pewnie podobna będzie. Żadnych dodatkowych skryptów poza konfigiem do strongswana czyli /etc/ipsec.conf smile
U mnie tplink przewala max do ok 28Mb/s ruchu przez tunel. Tunel szyfrowany aes128md5 (przy aes128sha2 było ok 24Mb/s). Oczywiście przy takim ruchu CPU obciążone na 100%. Przy braku ruchu dodatkowe obciążenie jest pomijalne.
Co do limitowania nie wypowiem się.

router1: Igel H820C + HP NC365 (openSUSE Linux) + Cisco AIR-AP3802E-E-K9
router2: Igel H820C + HP NC365 (Alpine Linux) +  Cisco AIR-AP3802I-E-K9

3

Odp: Policy Based Routing (PBR) + VPN

Nigdy nie robilem zaawansowanego konfigu w LEDE (VPN) a tymbardziej temat wireguard jest dosc nowy, czy ktos moze wypowiedziec sie na nastepujace tematy (podzielic sie jakimkolwiek konfigiem)

wireguard :
- ustawiam klienta allowed IPs na 0.0.0.0/0 - wg. guida to cos w stylu default route
- ustawiam server allowed IP na 10.1.1.100 - tylko ten IP bedzie mogl przejsc przez tunel
- ustawiam adresacje tunelu : 172.16.1.1/30 (server) i 172.16.1.2/30 (klient)



pytania :

1. jak klient ma przepchac cos przez tunel ?
  - router zmieni mu route na podstawie ww konfiga? (chyba marzenia)
  - ustawic mu default gateway na drugi koniec tunelu ? (dhcp, czy static config? no i czy router to obsluzy..)
  - ustawic PBR jak np tutaj :
https://forum.lede-project.org/t/use-wi … -only/7999

2. czy do dzialania wireguard wystarczy kmod-wireguard, czy trzeba jeszcze pakiet wireguard ? (mam jeszcze luci-app-wireguard, luci-proto-wireguard, wireguard-tools)

4 (edytowany przez sty 2018-04-13 15:09:28)

Odp: Policy Based Routing (PBR) + VPN

Ad. 2)
Zdaje się po zaznaczeniu luci-app-wireguard (jak używasz luci oczywiście) i/lub luci-proto-wireguard (ta lub wcześniejsza apka są jednocześnie w zależności od wersji jądra/distro/rewizji) zaznaczy się wszystko z pozostałych co niezbędne:
- kmod-wireguard zaznaczy się zawsze...natomiast wireguard lub wireguard-tools zaznaczy się w zależności, która wersja jądra/distro/rewizji.

Gdy nie używasz luci zaznaczasz sam kmod* i w zależności jaka to wersja jądra/distro/rewizja szukasz w różnych miejscach w drzewie pakietów pakietu wireguard lub wireguard-tools.
...i tak bym to zaznaczał na Twoim miejscu przez "make menuconfig" wink

5

Odp: Policy Based Routing (PBR) + VPN

Ad 2) wystarczy kmod-wireguard, po prostu routery trzeba bylo po instalacji zrebootowac
teraz czekaja mnie testy metoda prob i bledow co i jak. Jak mi sie uda to to opisze smile

6 (edytowany przez sty 2018-04-14 02:58:45)

Odp: Policy Based Routing (PBR) + VPN

Nie tak do końca - kmod-wireguard to tylko moduł jądra dający obsługę tego specyficznego protokołu vpn - cała logika i obsługa zawarta jest w wireguard/wireguard-tools (wszystkie komendy i opcje w wersji shell'owej) - luci-app-wireguard i  luci-proto-wireguard to tylko nakładki semigraficzne na wcześniej wymienione komendy i jako dodatek do konfiguratora sieci/itd. do luci, wraz z bazą odpowiednich/przykładowych konfiguracji wraz ze wzajemną logiką.
Reasumując: najlepiej i najprościej konfigurować to przez luci, chociaż niektóre detale i tak w ostateczności należy wykonać w konsoli.

Także w każdej możliwej wersji/możliwej konfiguracji potrzebujesz minimum 2 pakietów: kmod* + wireguard*.
No i ostatnia uwaga praktyczna: nie można użyć jednocześnie pakietów wireguard i wireguard-tools - wybierasz tylko jeden z nich lub sam się wybierze odpowiedni przy dodaniu pakietów do luci dla tego programu.

7

Odp: Policy Based Routing (PBR) + VPN

Dla wszystkich szukających podobnego rozwiązania polecam następujący tandem :

Wireguard :
https://danrl.com/blog/2017/luci-proto-wireguard/
https://mullvad.net/en/guides/running-wireguard-router/

VPN policy based routing :
https://github.com/stangri/openwrt_pack … /README.md
https://forum.lede-project.org/t/vpn-po … sion/10389

co udało mi się osiągnąć paroma kliknięciami :
- szyfrowany tunel między dwoma Lanami, ruch w obie strony
- PBR pozwala 1/paru klientom korzystanie z wyjścia przez drugi router

8 (edytowany przez miguelos 2018-04-27 23:14:41)

Odp: Policy Based Routing (PBR) + VPN

pozwole sobie dodac troche dokladniejszy opis bez wykorzystania VPN policy based routingu, korzystajac tylko z sekcji network + instalujac wireguarda

Podstawowa konfiguracja (site to site VPN + policy based routing dla 1 klienta)
z perspektywy routera 1
Zalozenia : router 1 lan = 192.168.1.0/24  ; router 2 lan = 10.1.1.0/24
1 host PBR = 192.168.1.97
konfiguracja drugiego routera jest "lustrzanym odbiciem" ponizszej konfiguracji


Instalujemy pakiety (zaleznosci zalatwiaja reszte)

opkg install luci-proto-wireguard
opkg install luci-app-wireguard

Generujemy klucze prywatne i publiczne

wg genkey | tee privatekey | wg pubkey > publickey

Tworzymy dodatkowa tablice routingu "vpn" :

    cat /etc/iproute2/rt_tables
    #
    # reserved values
    #
    128     prelocal
    255     local
    254     main
    253     default
    10      vpn
    0       unspec
    #
    # local
    #
    #1      inr.ruhep

Calosc konfiguracji mozemy osiagnac przez modyfikacje pliku /etc/config/network :

config interface 'wg0'
        option proto 'wireguard'
        option private_key 'my-private-key'
        list addresses '172.16.1.1/30'
        option listen_port '51820'

config wireguard_wg0
        option endpoint_host 'x.x.x.x'
        option endpoint_port '51820'
        option public_key 'remote-public-key'
        list allowed_ips '0.0.0.0/0'
# zezwalamy na ruch do wszystkich sieci

Kolejna sekcja to PBR, mozemy korzystac z /etc/config/network, albo luci-app-vpn-policy-routing

# dodajemy trasy :

# LAN po drugiej stronie tunelu
config route 'lanbehindtun'
        option interface 'wg0'
        option target '10.1.1.0/24'
        option gateway '172.16.1.2'

# trasa domyslna dla PBR, tabela 10 = vpn :
config route 'defaultviavpntable'
        option interface 'wg0'
        option target '0.0.0.0/0'
        option gateway '172.16.1.2'
        option table '10'

# ip rule dla source routingu
config rule
        option src '192.168.1.97/32'
        option lookup 'vpn'

Modyfikujemy firewall :

# ruch UDP na WAN
config rule
        option target 'ACCEPT'
        option src 'wan'
        option proto 'udp'
        option dest_port '51820'
        option name 'wireguard'

# nowa strefa I ogolne zasady :
config zone
        option name 'wireguard'
        option input 'ACCEPT'
        option forward 'REJECT'
        option output 'ACCEPT'
        option network 'wg0'

# zezwalaj by 1 zdalny klient (PBR) wychodzil do internetu przez lacze drugiego routera
config forwarding
        option dest 'wan'
        option src 'wireguard'

# zezwalaj na ruch z mojego lan do wireguard (tunelu)
config forwarding
        option dest 'wireguard'
        option src 'lan'

# zezwalaj na ruch z tunelu do mojego lan
config forwarding
        option dest 'lan'
        option src 'wireguard'

9

Odp: Policy Based Routing (PBR) + VPN

PS. Polecam wireguard, przy przepustowosci rzedu 10Mbit obiazenie CPU było max 15%