Wireguard szerver Mikrotikhez hasonlóna Ubuntu szerveren

Sziasztok!

Megpróbálom érthetően leírni a problémámat elnézést, ha nem sikerül. Ubuntu szerverek között szeretném ugyan azt a megoldást kivitelezni, mint amit már Mikrotiken megoldottam, illetve működik.

Mikrotiken a következőt hoztam össze. Adva van egy Mikrotik router, amin van egy WG-Site nevezetű Wireguard szerver. Ezzel együtt létrejött egy WG-Site nevezetű interfész, aminek az address listben adtam egy IP címet és hálózatot 192.168.30.1/24.

Wireguard beállításoknál a WG-Site interfész két peerhez (tunnelhez) van beállítva az egyik túloldali IP-je 192.168.30.2 a másik a 192.168.30.4.

Tehát azt szeretném összehozni, hogy az Ubuntu szerveren is csak egy csatoló legyen, amibe a két peer (tunnel) csatlakozik mindezt netplannal szeretném megvalósítani.

Bridge nem jöhet szóba mert a WG tunnelnél nem lehetséges, úgy tudom.

Gondolom megvalósítható lehet mert a Mikrotiken is linux fut.

Sajnos én nem értek úgy a hálózat beállításhoz, mint ahogyan szeretnék. Minden segítséget köszönök. 

Hozzászólások

Valóban nincs benne. De próbálkoztam. A második kapcsolódó szerver kulcsát és egyéb configját egyszerűen betettem az első alá.

https://netplan.readthedocs.io/en/latest/netplan-yaml/#properties-for-d…

Valahogy így:

network:
  tunnels:
    wg0:
      mode: wireguard
      key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
      port: 5182
      peers:
        - keys:
            public: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy=
          allowed-ips: [x.x.x.x/x]
          keepalive: 23
        - keys:
            public: vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv=
          allowed-ips: [c.c.c.c/c]
          keepalive: 22

Ami jó hogy az első peer működik.Az első és második peer látszik a a wg show parancsra csak a link nem áll össze.

Már kifolyik a szemem de nem látom a hibát. Azt mondja nincs allowed ips. Ami nem igaz mert megadtam a configba a túloldal címét/24-el. 

> Azt mondja nincs allowed ips.

Ezt ki mondja és mikor?

> Ami nem igaz mert megadtam a configba a túloldal címét/24-el. 

A "wg show" parancs kimentét elküldenéd?

> Ezt ki mondja és mikor?

A wg szerver amihez a másik kettő csatlakozna

 

Szerver jelenlegi élő config:

network:
  tunnels:
    wg0:
      mode: wireguard
      port: 35135
      key: +A#######################################GY=
      addresses:
        - 172.16.8.1/24
      peers:
        - keys:
            public: hh#######################################nA=
          allowed-ips: [172.16.8.2/24, 192.168.2.1/24]
          keepalive: 45
        - keys:
            public: HV#######################################xY=
          allowed-ips: [172.16.8.4/24]
          keepalive: 45

      routes:
        - to: 192.168.2.0/24
          via: 172.16.8.

wireguard szerver:

root@xxx01:~# wg show
interface: wg0
  public key: 5D#######################################n0=
  private key: (hidden)
  listening port: 35135

peer: hh#######################################A=
  endpoint: xxx.xxx.xxx.xxx:35623
  allowed ips: 192.168.2.0/24, 172.16.8.0/24
  latest handshake: 1 minute, 21 seconds ago
  transfer: 23.57 KiB received, 69.84 KiB sent
  persistent keepalive: every 45 seconds

peer: HV#######################################xY=
  allowed ips: (none)
  persistent keepalive: every 45 seconds

 

Ami a fenti a szerverhez kapcsolódna (a második peer, ami nem kapcsolódik össze) configja:

network:
  tunnels:
    wg0:
      mode: wireguard
      port: 13195
      key: EN#######################################m8=
      addresses:
        - 172.16.8.4/24
      peers:
        - keys:
            public: 5D#######################################n0=
          endpoint: 178.xxx.xxx.xxx:35135
          allowed-ips: [172.16.8.1/24, 192.168.2.1/24]
      routes:
        - to: 192.168.2.0/24
          via: 172.16.8.1

wireguard kimenet kapcsolódó szerver:

root@vmiXXXX:~# wg show
interface: wg0
  public key: HV#######################################xY=
  private key: (hidden)
  listening port: 13195

peer: 5D#######################################n0=
  endpoint: xxx.xxx.xxx.xxx:35135
  allowed ips: 192.168.2.0/24, 172.16.8.0/24

 

Ami a furcsa hogy tcpdumpal nem látom még azt se hogy a másik szerver próbálkozna csatlakozni, gondolom látnom kellene.

az allowed ip mindig a tunnelbe bemeno forgalmat "szuri", de ez nem egy route szabaly. azt neha kulon kell felvenni.

ha a serveren az A peernel az allowedip: 172.16.8.42/32, akkor a kliens csak a 172.16.8.42 ipt allithatja be. (igazabol mast is beallithat, de akkor nemlesz forgalma, mert a server->peer irany szurodik.)

megadhatsz /24 akkor barmilyen ipt felvehet a kliens. de maradt a /32-nel, azzal kvazi fixipre korlatozod a klienst.

 

A kliensnel ugyanez csak masik irany: azt szurod meg hogy milyen forgalom mehet bele a vpnbe.

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

> Ami a furcsa hogy tcpdumpal nem látom még azt se hogy a másik szerver próbálkozna csatlakozni, gondolom látnom kellene.

Átnéztem a config-jaidat, a következő kérdések merültek föl. Az első konfigodban ezek vannak az allowed ips-ben: 172.16.8.2/24, 192.168.2.1/24 és 172.16.8.4/24

Ez így nem értelmes, mert host bitek is be vannak állítva. Ha kiszeded a host biteket akkor ez lesz belőle: 172.168.8.0/24, 192.168.2.0/24 és 172.16.8.0/24. Az első és az utolsó azonos. Nyilvánvalóan, ha két különböző peer-nek azonos allowed ips-t adsz meg, akkor abból probléma lehet. Ha az általad "második peer"-nek nevezett eszköz csak egyetlen egy címet használ /24 helyett, akkor oda inkább /32-őt írj. Ha viszont /24-et, akkor alapvetően hibás az egész, mert nem lehet két különböző peer-nek pontosan ugyan azt a subnet-et beállítani. (Vagyis lehet, csak soha nem fog működni.)

Az nem biztos, hogy ez az oka annak, hogy nem tudnak összekapcsolódni. De ezt javítsd ki.

Másik kérdés: ha nem netplan-ből próbálkozol a "második peer"-ről, hanem simán wg és ip parancsokkal, akkor se kapcsolódik?

 allowed ips: (none)

Ez azt jelenti hogy egy már kiosztott end-user tunnel IP-t adott hozzá a wg server egy másik tunnelhez is és duplikált entry keletkezet. A megoldás hogy /24 helyett /32 CIDR tartományban legyen a peer tunnel IP konfigolva a serveren.

Nálad 192.168.30.2/32 és 192.168.30.4/32 kéne. /24 helyett.

Részben segített a tunnel addresses részénél meghagytam a /24-et, viszont a peerek allowed-ip-nél /32-re javítottam amiben a tunel végpontjai érintettek, kivétel az a hálózat amit kompletten elszeretnék érni.

Mindenhol ott van az allowed-ip.

A link sajnos így sem áll össze. Az első peer működik hiba nélkül.

Azt sem értem hogy netplan apply miért nem működik megfelelően.

Egyszerűen nem olvassa újra config állományt, benn marad a régi és csak a szerverek újra indításával tudom betölteni az új configot.

Olyannak tűnik mintha az a szerver aminek a kapcsolatot létre kellene hozni nem is próbálkozik. Megpróbáltam be telnetelni a portra, azok a próbálkozások látszottakat a tcpdumban.

Mert az egy dolog hogy nem áll össze a link, de hogy még az első próbálkozás nyomát sem tudom felfedezni az érdekes.

Nem tudom.

Részben segített a tunnel addresses részénél meghagytam a /24-et, viszont a peerek allowed-ip-nél /32-re javítottam amiben a tunel végpontjai érintettek, kivétel az a hálózat amit kompletten elszeretnék érni.

Szerintem az általad "szerver"- nek nevezett első konfigban:

  • az address elvileg maradhat 172.16.8.1/24, de ha ezen az oldalon csak ez az egy 172.16.8.1 cím van használva, akkor oda én inkább 172.16.8.1/32 -őt írnék
  • az első peer-nél allowed-ips [172.16.8.2/24, 192.168.2.1/24] helyett [172.16.8.0/24, 192.168.2.0/24] mert csak így értelmes
  • plusz a kettőt ne keverd, tehát ha az allowed ips-ben 172.16.8.0/24-et használsz, akkor a server address ne legyen  /24 (mert akkor nem lehet tudni, hogy egy 172.16.8.X cím az melyik oldalon van, a peer-nél vagy a szerveren)
  • a második peer-nél az allowed-ips az legyen 172.16.8.4/32, vagy valami teljesen másik subnet, ami nem ütközik az első peer allowed-ips részével (mert akkor megint csak nem lehet tudni, hogy egy adott cím az melyik peer-nél van)

az általad "második peer ami nem kapcsolódik össze" nevűnél pedig ezzel konzisztens módon:

  • az address-be vagy 172.16.8.4/32 vagy valami teljesen másik subnet
  • az allowed ips- be 172.16.8.1/24, 192.168.2.1/24 helyett 172.16.8.0/24, 192.168.2.0/24

Netplant lehet nem kéne.

systemctl start wg-quick@wg0

systemctl stop wg-quick@wg0

ennyi szokott lenni a szerver start stop manuálisan.

a /etc/wireguard/wg0.conf fileban szokott lenni PostUp, PostDown config ezekre van jó tutorial

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; wg addconf %i /etc/wireguard/peers.conf
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT