Portál AbcLinuxu, 5. května 2024 10:05


Dotaz: Wireguard? Mikrotik - Debian - NFTables

6.8.2021 09:43 googler | skóre: 6
Wireguard? Mikrotik - Debian - NFTables
Přečteno: 1523×
Odpovědět | Admin

caute, nedari sa mi rozchodit WG pod debian 10 na RPI3 (cisty debian, nie raspbian), tipujem to na problem vo firewalle - bud v mikrotiku alebo v NFTables.
Na mikrotiku mam dve vlany - sukromnu a pre hosti. Na MT v ip addresses som pod sukromnu vlanu pridal dalsiu siet pre vpn peerov a pre wg0 (RPI3) pricom eth0 na RPI3 ma ip od povodnej sukromnej siete
Na MT som NATol WG port na ip eth0 v RPI a povolil som maskaradu pre vpn siet.

ip firewall filter vyzera takto:

 0    chain=input action=accept connection-state=established,related 

1    chain=input action=accept in-interface=fix_vlan log=no log-prefix=""

2    chain=input action=drop connection-state=invalid

3    chain=input action=jump jump-target=WAN>INPUT in-interface-list=WAN log=no log-prefix=""

4    chain=input action=drop log=yes

5    chain=forward action=accept connection-state=established,related

6    chain=forward action=accept in-interface=fix_vlan out-interface-list=WAN log=no log-prefix=""

7    chain=forward action=accept in-interface=host_vlan out-interface-list=WAN log=no log-prefix=""

8    ;;; DSTNAT
chain=forward action=accept connection-nat-state=dstnat log=no log-prefix=""

9    chain=forward action=accept src-address-list=host_ip dst-address-list=tlac in-interface=host_vlan log=no log-prefix=""

10    chain=forward action=accept src-address-list=vpn_ip in-interface=fix_vlan log=no log-prefix=""

11    chain=forward action=drop connection-state=invalid

12    chain=forward action=drop src-address-list=!fix_ip in-interface=fix_vlan log=no log-prefix=""

13    chain=forward action=drop src-address-list=!host_ip in-interface=host_vlan log=no log-prefix=""

14    chain=forward action=drop dst-address-list=bogon log=yes log-prefix="bogon"

15    chain=forward action=drop in-interface=host_vlan out-interface=fix_vlan log=no log-prefix=""

16    chain=forward action=drop log=yes log-prefix=""

17    chain=WAN>INPUT action=drop log=no log-prefix=""


nftables.conf na debiane (RPI) vyzera takto:

define WAN_IFC = eth0
define VPN_IFC = wg0

table inet filter {
chain input {
type filter hook input priority 0; policy drop;

# Allow traffic from established and related packets.
ct state established,related accept;

# Drop invalid packets.
ct state invalid drop;

# Allow loopback traffic.
iifname lo accept;

# Allow all ICMP and IGMP traffic, but enforce a rate limit
# to help prevent some types of flood attacks.
ip protocol icmp limit rate 4/second accept;
ip protocol igmp limit rate 4/second accept;

# Allow SSH specific IPs
tcp dport 22 ip saddr $SAFE_IPS accept;

# Allow WG
udp dport WG port accept;

# Deny WG
udp dport WG port ip saddr $HOST_NET drop;

# Allow DNS
udp dport 53 accept;

# Allow WWW specific IPs
tcp dport { http, https } ip saddr $SAFE_IPS accept;
udp dport { http, https } ip saddr $SAFE_IPS accept;

}
chain forward {
type filter hook forward priority 0; policy drop;

# forward WireGuard traffic, allowing it to access internet via WAN
iifname $VPN_IFC oifname $WAN_IFC ct state new accept
}
chain output {
type filter hook output priority 0; policy accept;
}
}

table ip router {
# both prerouting and postrouting must be specified

chain prerouting {
type nat hook prerouting priority 0;
}

chain postrouting {
type nat hook postrouting priority 100;

# masquerade wireguard traffic
# make wireguard traffic look like it comes from the server itself
oifname $WAN_IFC ip saddr $VPN_NET masquerade
}
}


wg0.conf na servery (RPI) vyzera takto:

[Interface]
Address = lan.ip.adresa.servera z rozsahu vpn_net vytvorenej v MT/24
ListenPort = WG port
PrivateKey = ...

[Peer]
PublicKey = ...
PresharedKey = ...
AllowedIPs = 0.0.0.0/0


client vyzera takto:

[Interface]
PrivateKey = ...
Address = lan.ip.adresa.clienta z rozsahu vpn_net vytvorenej v MT/32
DNS = lan.ip.adresa.mt (je na nom povoleny DNS)

[Peer]
PublicKey = ...
PresharedKey = ...
AllowedIPs = 0.0.0.0/0
Endpoint = verejna.ip.adr.esa:WG port
PersistentKeepalive = 25


Stav je taky ze pripojenie sice funguje (tunel je aktivny) ale vzdialeny client nema pristup na internet ani k zariadeniam v lan sieti.
Ciel: chcem aby mal vzdialeny client pristup k lan zariadeniam a pristup na internet tak aby traffic "pochadzal z miesta vpn

PS: Dufam ze som to napisal zrozumitelne, v pripade potreby nieco upresnim.
Diky za rady


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.8.2021 10:44 X
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mohl by jsi priste pouzit tag 'pre' na tu konfiguraci. Tohle se neda cist. Kazdopadne tcpdump je tvuj kamarad. Pust nejake ICMP a odsleduj si celou komunikaci.
6.8.2021 11:41 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
pouzil som code ale asi nezafungoval
6.8.2021 13:47 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
snazil som sa nieco pozriet o tcpdump ale moc s nim robit neviem takze neviem ako mi ma pomoct pri rieseni problemu
6.8.2021 16:34 xyz
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podla mna je problem v tom, ze na serveri mas adresu s maskou /24 a na klientovi /32. Potom este na serveri ma by v allowedips iba ip adresa klienta s maskou /32. Takze napr.:

server:
[Interface]
Address = 10.0.0.1/24
ListenPort = WG port
PrivateKey = ...

[Peer]
PublicKey = ...
PresharedKey = ...
AllowedIPs = 10.0.0.2/32
client:
[Interface]
PrivateKey = ...
Address = 10.0.0.2/24
DNS = lan.ip.adresa.mt (je na nom povoleny DNS)

[Peer]
PublicKey = ...
PresharedKey = ...
AllowedIPs = 0.0.0.0/0
Endpoint = verejna.ip.adr.esa:WG port
PersistentKeepalive = 25
6.8.2021 18:49 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
skusim tu masku v clientovi zmenit na /24 a do allowips som dal "nulovu" ip pretoze som cital ze je to nutne v pripade ze chcem aby internetovy traffic clienta "pochadzal" z miesta kde je vpn server
9.8.2021 09:18 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
zmena masky nepomohla, ked som hladal riesenie tak som narazil na prispevky podla ktorych vpn casto nefungovala preto lebo v mikrotiku / v rotery nemali nastavenu routu. Routu som neriesil ani ja (mozno tam je chyba), ako ju mam nastavit? aku hodnotu?

Vsimol som si mozno "zaujimavu" vec: Ked sa pripajam na server cez windows wireguard gui klienta tak sa sice pripoji a tunel je aktivny ale to gui rozhranie ukazuje nejaky nahodny listening port (pri kazdom pripojeni iny) a nie ten ktory som zadal do konfiiguracie toho clienta a servera
9.8.2021 10:44 X
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
Povolit debugging Wireguardu a poslat sem vystup by jsi zvladl? S tcpdumpem v kombinaci s ICMP jsi nejak pokrocil? Bez diagnostickych vystupu je to jen slepe hadani a zkouseni.. nikdo nevi co mas za problem.
9.8.2021 12:27 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
povolim debug a dam vystup, ten tcpdump&icmp asi nie je pokrocila vec ale proste to spravit neviem resp. neviem co pod tym myslis (tcpdump som nikdy nepouzil), skusal som nieco googlit ale o moc mudrejsi z toho nie som
9.8.2021 14:55 X
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
Tcpdump je prikaz, ktery posloucha na rozhrani a vypisuje jaka data prochazi. Ping je prikaz, ktery odesle dotaz z mista A do mista B a ceka na odpoved. Bez znalosti techto nastroju nemas moc sanci zjistit co se kde stalo. Doporucil bych knihu Velký průvodce protokoly TCP/IP a systémem DNS.
9.8.2021 16:31 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
som pripraveny na vlnu hateov ale az teraz som zistil ze ked bol na servery zapnuty wg0 tak na servery (RPI) nefungoval net vobec - nemohol som pingnut nic verejne ani cez ip a domenu. Ked som vypol wg0 cez
wg-quick down wg0
output bol takyto:
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
[#] nft -f /dev/fd/63
a potom net fungoval na RPI normalne, ked som skusil znovu zapnut wg0 cez
wg-quick up wg0
output bol takyto:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.40.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] nft -f /dev/fd/63
a potom zase net na RPI prestal fungovat. Po zapnuti debug wireguard cez
echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control
je v outpute
dmesg
o wireguard iba toto:
[   13.288343] wireguard: module verification failed: signature and/or required key missing - tainting kernel
[   13.302966] wireguard: WireGuard 1.0.20210219 loaded. See www.wireguard.com for information.
[   13.311941] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld Jason@zx2c4.com. All Rights Reserved.
9.8.2021 17:53 X
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
Net na RPi nefunguje protoze:
AllowedIPs = 0.0.0.0/0
Zpusobi, ze se veskery provoz presmeruje do tunelu:
ip -4 route add 0.0.0.0/0 dev wg0 table 51820
Predpokladam, ze tam ma byt spravne sit 10.0.40.0/24 vyhrazena pro tunel.

Dale v konfiguraci, kterou jsi sem poslal mas sit 10.0.0.0/24, ale v debug vystupu Wireguard je 10.0.40.0/24. Takze bud jsi sem napsal nespravne udaje, nebo je neco dalsiho spatne.

9.8.2021 19:06 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
no ale ucelom je aby vsetok traffic prechadzal cez tunel do internetu, problem je v tom ze traffic sa cez tunel nedostane do internetu a neviem preco. Ja som ip adresu tunela predtym neuvadzal, ip adresu 10.0.0.0/24 uvadzal uzivatel "xyz" ako priklad configu
vencour avatar 9.8.2021 19:43 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
Jak prochází trace? Jde podle očekávání?
Mně osobně pomohlo i u klienta dopsat port, na kterém poslouchá.
Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
9.8.2021 20:16 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
asi myslis ze by som mal zistit trace cez tcpdump, uz mi to tu radili ale neviem ako to mam spravit (nikdy som s tym nerobil a info co som vygooglil mi tiez moc nepomohli).

Listening port mam v configu klienta definovany, ale po aktivovani toho tunelu mi GUI wireguard aj tak ukazuje ze je pripojeny cez iny port
vencour avatar 9.8.2021 20:55 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
To, co jsem řešil já, tak ve výpisu paketů tam a zpět mi neseděly počty, zpět 0 ... poznal jsem to u
# ip -s li sh dev <interfejs_pro_wireguard>
Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
9.8.2021 21:16 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
ja mam 0 vsade podla outputu toho prikazu co si napisal
9.8.2021 21:18 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
opravujem sa - v riadku TX v stlpci errors mam 1, ako mi ma toto zistenie pomoct?
vencour avatar 9.8.2021 21:36 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
Aspoň odcházet by data měly ok ...
# ip -s li sh dev wgint
10: wgint: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/none 
    RX: bytes  packets  errors  dropped missed  mcast   
    36844320   288504   0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    37081740   291066   39      0       0       0   
takhle tak nějak vypadá funkční statistika u testovacího spoje, občas možná něco vypadne, proto nějaký errory jsou.
Opravdu tam máte jen "errors"?
Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
9.8.2021 22:13 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables

toto je output po tom ako bol tunel nedzi serverom a peerom aktivny cca minutu (server a peer boli v rovnakej lan, ale internet peerovi nefungoval):

ip -s li sh dev wg0
10: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/none
RX: bytes  packets  errors  dropped overrun mcast
162300     1052     0       0       0       0
 TX: bytes  packets  errors  dropped carrier collsns
 4660       51       1       0       0       0


vencour avatar 9.8.2021 22:19 vencour | skóre: 56 | blog: Tady je Vencourovo | Praha+západní Čechy
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
A co je to "internet peerovi nefungoval"?
Jaký provoz to nešel?
Jestli je někde nějaký pravidlo do firewallu, i vypisovat to, co to matchne, může pomoct.
Ty nejhlubší objevy nečekají nutně za příští hvězdou. Jsou uvnitř nás utkány do vláken, která nás spojují, nás všechny.
9.8.2021 23:10 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables

 

A co je to "internet peerovi nefungoval"?
No peer nemohol pingnut nic verejne ani cez domenu (napr. google.com) ani ip (8.8.8.8), mohol pingnut iba lan ip WG servera
Řešení 1× (vencour)
9.8.2021 22:37 X
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
Jenze podle maskarady kterou mas ve firewallu se provoz maskuje smerem z tunelu do netu. Direktiva AllowedIPs rika, ktere site se budou routovat smerem spatky do tunelu, takze obraceny smerem. Tohle nema to cenu. Plaves v tom jak v septiku. Najdi si nekoho v okoli kdo ma vic rozumu a doresi to s tebou osobne.
30.8.2021 21:02 googler | skóre: 6
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables

sorry, neuvedomil som si ze si hovoril asi o tychto pravidlach v nftables.conf

 iifname $VPN_IFC oifname $WAN_IFC ct state new accept;
iifname $VPN_IFC oifname $WAN_IFC accept;

nahradil som ich tymito dvomi pravidlami a pripojenie peera uz funguje vratane pristupu do siete a smerovania vsetkeho  trafficu cez wireguard VPN ip:

iifname $VPN_IFC accept;
oifname $VPN_IFC ct state established,related accept;

 

ale chcel by som este vediet ako mozem niektorych peerov limitovat tak ze nebudu mat pristup ku vsetkym zariadeniam v sieti ale len ku niektorym z nich?

Diky za odpoved.

9.8.2021 12:13 j
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
Mikrotik je takovej polofukcni hnus ... co se tyce vpn, tak nevim jek se chova specielne wireguard, ale kvuliva normalni konfiguraci ipsecu se musi na mikrotikovi vyrobit plonkovy iface a na nej se musi nastavit routa. Oni to totiz soudruzi bez toho iface neumi.

Hledej blackhole bridge.

A jak uz zaznelo, tcpdump je tvuj kamos.

---

Dete s tim guuglem dopice!
31.8.2021 11:02 klm
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
nevim jek se chova specielne wireguard, ale kvuliva normalni konfiguraci ipsecu se musi na mikrotikovi vyrobit plonkovy iface a na nej se musi nastavit routa.
Wireguard vyrábí plonkový interface také. Už z návrhu.
16.9.2021 13:09 bigBRAMBOR | skóre: 37
Rozbalit Rozbalit vše Re: Wireguard? Mikrotik - Debian - NFTables
kvuliva normalni konfiguraci ipsecu se musi na mikrotikovi vyrobit plonkovy iface a na nej se musi nastavit routa

nic takove jsem na ipsec na mikrotiku nastavovat nemusel a ted s tim zacinat nebudu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.