Vad behövs för att routa mellan två gränssnitt?

Permalänk
Medlem

Vad behövs för att routa mellan två gränssnitt?

Total nybörjare i Linuxvärlden, allt är ju helt obegripligt
Ubuntu server 18.04

Jag sätter upp en OpenVPN-tunnel mellan två Ubuntumaskiner som ska få routa trafik mellan två LAN, ingen NAT, men får det fasiken inte att funka.

- Tunneln funkar, jag kan skicka ping genom tunneln från klienten 10.82.0.2 till servern 10.82.0.1 och vice versa, alla ping returneras.
- Skickar jag ett ping från LAN (192.168.73.104) på klientsidan till klienten (192.168.73.21) så kommer paketet fram och ping returneras.
- Skickar jag ett ping från LAN (192.168.73.104) på klientsidan till klientens tun0 (10.82.0.2) så kommer paketet fram och ping returneras.
- Skickar jag ett ping från LAN (192.168.73.104) på klientsidan till serverns tun0 (10.82.0.1) så försvinner paketet nånstans i tunneln, dvs, jag ser att det går in till klienten på eth0, ut från klienten till tun0 (sudo tcpdump -i tun0) men det kommer inte fram på servern i tun0.

Kanske använder jag tcpdump fel?

Behöver jag göra något mer än att fixa rätt routes, 'net.ipv4.ip_forward = 1' och 'ufw disabled'?

Måste man greja nåt med iptables, brandväggen, ...?

Jag har googlat arslet av mig i en vecka nu, men blir inte klokare

Permalänk
Medlem

@Strip:

Du kan behöva lägga till routes/väg för nätverk du vill nå. Du kan ta hjälp av nixCraft. Det finns ett kommando som de inte nämner och de är "ip route get <ip>", kortfattat så fyller du en ip och den ger tillbaka vilken väg den skulle ta för att nå dit.

Jag vet inte vilken metod du har använt för att sätta upp tunneln. Så jag osäker om de lagt till routes eller inte.

Visa signatur

Stationär: 7800X3D | 32GB DDR5 | Strix B650 | 3080 XTREME WF | Evolv X | 970 2+1TB | G915 | G604/G Pro W | LG 42C2
Homelab: I3 6100 | 64GB DDR4 | Node 304 | 6x 4TB HGST| 990 PRO 2 TB
Bärbart: Macbook 14 pro M2 | Tab S5e | iPhone 14 pro

Permalänk
Medlem
Skrivet av Claews:

@Strip:

Du kan behöva lägga till routes/väg för nätverk du vill nå. Du kan ta hjälp av nixCraft. Det finns ett kommando som de inte nämner och de är "ip route get <ip>", kortfattat så fyller du en ip och den ger tillbaka vilken väg den skulle ta för att nå dit.

Jag vet inte vilken metod du har använt för att sätta upp tunneln. Så jag osäker om de lagt till routes eller inte.

Routingtabellen:

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.73.1 0.0.0.0 UG 100 0 0 eth0
10.82.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
192.168.51.0 10.82.0.1 255.255.255.0 UG 0 0 0 tun0
192.168.73.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.73.1 0.0.0.0 255.255.255.255 UH 100 0 0 eth0

$ ip route get to 10.82.0.1 from 192.168.73.104 iif eth
ger svaret
010.82.0.1 from 192.168.73.104 dev tun0
cache iif eth0

Jag förstår inte riktigt sista raden, men resten ser väl korrekt ut?

Permalänk
Medlem

@Strip: Det ser korrekt ut. Vad är det som inte fungerar som du vill? är inte heller helt hundra på hur din topologi ser ut. Har du klienter bakom varje Ubuntu server som försöker nå varandra genom en tunnel?

"- Skickar jag ett ping från LAN (192.168.73.104) på klientsidan till serverns tun0 (10.82.0.1) så försvinner paketet nånstans i tunneln"

Nu gissar jag lite men kanske det rör sig om hairpinning (långsökt) eller att klienten inte har en giltig väg (route) dit du försöker nå. Sen kan de även vara iptables som blockerar i den riktningen.

Visa signatur

Stationär: 7800X3D | 32GB DDR5 | Strix B650 | 3080 XTREME WF | Evolv X | 970 2+1TB | G915 | G604/G Pro W | LG 42C2
Homelab: I3 6100 | 64GB DDR4 | Node 304 | 6x 4TB HGST| 990 PRO 2 TB
Bärbart: Macbook 14 pro M2 | Tab S5e | iPhone 14 pro

Permalänk
Medlem
Skrivet av Claews:

@Strip: Det ser korrekt ut. Vad är det som inte fungerar som du vill? är inte heller helt hundra på hur din topologi ser ut. Har du klienter bakom varje Ubuntu server som försöker nå varandra genom en tunnel?

"- Skickar jag ett ping från LAN (192.168.73.104) på klientsidan till serverns tun0 (10.82.0.1) så försvinner paketet nånstans i tunneln"

Nu gissar jag lite men kanske det rör sig om hairpinning (långsökt) eller att klienten inte har en giltig väg (route) dit du försöker nå. Sen kan de även vara iptables som blockerar i den riktningen.

Hairpinning var nytt för mig, intressant. Men här ska inte nån NAT vara inblandad, rimligen.

Jag vill att 192.168.73.21 ska routa paket från 192.168.73.104 till 192.168.51.21 via tunneln. I förlängningen ska de två fysiska platsernas LAN routas helt över tunneln.

Det som inte funkar är att mina paket från 192.168.73.104 till tunneln försvinner nånstans och jag vet inte riktigt hur jag ska hitta dem. Själva tunneln verkar funka, jag kan pinga mellan 10.82.0.2 <-> 10.82.0.1, det är routingen i 192.168.73.21 som inte funkar, paketen kommer inte fram till 10.82.0.1.

Är det korrekt uppfattat att 'sudo tcpdump -i tun0' på vpn_client visar paket som skickas till eller kommer från tun0? Eller kan det vara så att paketet droppas efter att tcpdump fångat det?

Edit:
Iptables är brandvägg enbart? Så om ufw=disabled ska all trafik flöda fritt? Eller måste jag ändå konfigurera iptables med nåt?

Tillägg iptables
Permalänk
Medlem

Jag är rätt upptagen idag men kan kolla djupare ikväll/imorgon. Googlade lite och hittade http://www.yourownlinux.com/2013/07/how-to-configure-ubuntu-a... osäker om de är till någon hjälp.

Visa signatur

Stationär: 7800X3D | 32GB DDR5 | Strix B650 | 3080 XTREME WF | Evolv X | 970 2+1TB | G915 | G604/G Pro W | LG 42C2
Homelab: I3 6100 | 64GB DDR4 | Node 304 | 6x 4TB HGST| 990 PRO 2 TB
Bärbart: Macbook 14 pro M2 | Tab S5e | iPhone 14 pro

Permalänk
Medlem

Har VPN-servern en route tillbaka till 192.168.73-nätet?

Visa signatur

i7 8700k @ 4.7GHz | NH-L12 | ASUS Z270i ROG Strix Gaming | EVGA 1080 FTW | 32GB Corsair Vengeance 3000MHz | Samsung 970 Evo M.2 500GB, 840 250GB, Crucial MX500 2TB | Loque Ghost S1 | XB271HU | QX2710 | U2412M | U2719D | Filco Majestouch 2 MX Brown TKL

Permalänk
Medlem
Skrivet av era909:

Har VPN-servern en route tillbaka till 192.168.73-nätet?

Jodå, det finns motsvarande route på servern:

$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.51.1 0.0.0.0 UG 100 0 0 eth0 10.82.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0 192.168.51.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.51.1 0.0.0.0 255.255.255.255 UH 100 0 0 eth0 192.168.73.0 10.82.0.2 255.255.255.0 UG 0 0 0 tun0

Jag ger upp nu. Börjar om med nyinstallation, jag måste missat något väldigt fundamentalt. Jag får väl skylla mig själv som uteslutande jobbat med Windows hela livet

Permalänk
Medlem

Du kan lista dina iptables regler med kommandot
sudo iptables --list-rules

Finns raden:
-P FORWARD ACCEPT

Och inga andra forward regler borde den skyffla trafik

Ser du trafik i tunneln med tcpdump på VPN_server?

Skickades från m.sweclockers.com

Visa signatur

Kör Archlinux

Permalänk
Medlem

Jag blåste allt och började från början, med två helt nya installationer av Ubuntu server. Samma problem, paketen försvann nånstans i tunneln. Men...

Det visade sig att det var OpenVPN som lurades. Tydligen droppar servern paket som den inte har en intern route för. Förmodligen är den snabbare än tcpdump då, som aldrig hinner se paketet i fråga. OpenVPN-loggen visar nåt i stil med:

... MULTI: bad source address from client [192.168.73.104], packet dropped

Lösningen heter iroute (man kan gissa att i:et står för "internal"?).

Skrivet av https://openvpn.net/community-resources/how-to/:

"... route controls the routing from the kernel to the OpenVPN server (via the TUN interface) while iroute controls the routing from the OpenVPN server to the remote clients. Both are necessary."

Alltså:

$ /etc/openvpn/server.conf ... client-config-dir ccd

och...

$ /etc/openvpn/ccd/client iroute 192.168.73.0 255.255.255.0

Klart.

Detta borde jag ju kunnat lösa väldigt mycket fortare om jag inte stirrat mig blind på att själva tunneln fungerade.
Brandväggen vet jag väl inte om den behövs, men den släpper igenom mina paket med lite fix:

$ /etc/default/ufw DEFAULT_FORWARD_POLICY="ACCEPT"

Tack för visat intresse!