Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  6 3600
Jeg har en Debian-maskin med Proxmox installert.
Nettverkskonfigurasjon på host:
vmbr0 @ host

bridge eth0
ipv6: 2001:db8:34:9::2
ipv6 gateway: 2001:db8:34:9::1
Vis hele sitatet...
Jeg har fått tildelt subnettet 2001:db8:34::/48 som routes til IPv6 angitt i vmbr0.
vmbr1 @ host

ipv6: 2001:db8:34:a::1/64

#ipv6 gateway: 2001:db8:34:9::2
#Gateway er ikke satt som en innstilling, ettersom det kun er mulig med en gateway, men jeg påpeker overfor dere hvor den routes, derfor skriver jeg gateway i linjen over her.
Vis hele sitatet...
Container:
eth0 @ wireguard-container
eth0 er i bridge til vmbr1 på host.

ipv6: 2001:db8:34:a::3/64
ipv6 gateway: 2001:db8:34:a::1
Vis hele sitatet...
wg0 @ wireguard-container
ipv6: 2001:db8:34:b::1/64

wg1 @ wireguard-container
ipv6: 2001:db8:34:c::1/64
Vis hele sitatet...
Alle IPv6-adressene som er oppgitt hittil er mulig å kontakte fra utsiden.
IPv6-adressene som jeg router til Wireguard-klientene er derimot ikke mulig å kontakte fra utsiden.

ip -6 route fra hostmaskin:
ip -6 route @ host

2001:db8:34:9::/64 dev vmbr0 proto kernel metric 256 pref medium
2001:db8:34:a::/64 dev vmbr1 proto kernel metric 256 pref medium
2001:db8:34:b::/64 via 2001:db8:34:a::3 dev vmbr1 proto kernel metric 256 pref medium
2001:db8:34:c::/64 via 2001:db8:34:a::3 dev vmbr1 proto kernel metric 256 pref medium
fe80::/64 dev vmbr0 proto kernel metric 256 pref medium
fe80::/64 dev vmbr1 proto kernel metric 256 pref medium
fe80::/64 dev vmbr1 proto kernel metric 256 pref medium
fe80::/64 dev vmbr1 proto kernel metric 256 pref medium
default via 2001:db8:34:9::1 dev vmbr0 proto kernel metric 1024 onlink pref medium
Vis hele sitatet...
ip6tables-save fra hostmaskin:
ip6tables-save @ host

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*filter
:INPUT ACCEPT [1092216:834391036]
:FORWARD ACCEPT [86622941:125086301925]
:OUTPUT ACCEPT [1083462:654199510]
COMMIT
*raw
:PREROUTING ACCEPT [96851057:126589655036]
:OUTPUT ACCEPT [1083464:654199942]
COMMIT
Vis hele sitatet...
sysctl -p fra hostmaskin:
sysctl -p @ host

vm.max_map_count = 262144
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
Vis hele sitatet...
ip -6 route fra wireguard-container:
ip -6 route @ wireguard-container

::1 dev lo proto kernel metric 256 pref medium
2001:db8:34:a::/64 dev eth0 proto kernel metric 256 pref medium
2001:db8:34:b::/64 dev wg0 metric 1024 pref medium
2001:db8:34:c::/64 dev wg1 metric 1024 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via 2001:db8:34:a::1 dev eth0 metric 1 pref medium
Vis hele sitatet...
ip6tables-save fra wireguard-container:
ip6tables-save @ wireguard-container

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [366:37096]
-A INPUT -i eth0 -j ACCEPT
-A INPUT -i wg0 -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -i wg1 -j ACCEPT
-A FORWARD -i wg0 -j ACCEPT
-A FORWARD -i eth0 -j ACCEPT
-A FORWARD -i wg1 -j ACCEPT
-A FORWARD -i eth0 -j ACCEPT
COMMIT
*nat
:PREROUTING ACCEPT [14:1216]
:INPUT ACCEPT [5:440]
:POSTROUTING ACCEPT [3:272]
:OUTPUT ACCEPT [40:3370]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
Vis hele sitatet...
sysctl -p fra Wireguard-container:
sysctl -p @ wireguard-container

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
Vis hele sitatet...
Traceroute mot IP-adressen til host-maskinen, dette er kun de to siste linjene.
Traceroute 2001:db8:34:9::2

2001:db8:aaaa::11:113
2001:db8:34:9::2
Vis hele sitatet...
Traceroute mot IP-adressen til Wireguard-containeren, kun tre siste linjene.
Traceroute 2001:db8:34:a::3

2001:db8:aaaa::11:113
2001:db8:34:9::2
2001:db8:34:a::3
Vis hele sitatet...
Traceroute mot IP-adressen som brukes av Wireguard-serveren wg0, kun de tre siste linjene.
Traceroute 2001:db8:34:b::1

2001:db8:aaaa::11:113
2001:db8:34:9::2
2001:db8:34:b::1
Vis hele sitatet...
Traceroute mot en av Wireguard-klientene på wg0, kun de tre siste linjene.
Traceroute 2001:db8:34:b::5

2001:db8:34:9::2
2001:db8:34:a::3
??????????????????
Vis hele sitatet...
Dvs. den router ikke fram til Wireguard-klienten, men stopper på IP-adressen til Wireguard-containeren, jeg forstår ikke hvorfor.

Noen råd å komme med?
Sist endret av Tysteren; 4. januar 2022 kl. 23:30.
Trigonoceps occipita
vidarlo's Avatar
Donor
Kva er output av sudo wg på både wg-server og klient? Du kan gjerne sensurere peers, men la IPer stå.
Hei vidarlo!
Her er en utskrift av wg0 fra wireguard-containeren.
Sitat av wg-container
interface: wg0
public key: Q****
private key: (hidden)
listening port: 51420

peer: E***
endpoint: ipv4-hjem-til-meg:51820
allowed ips: 192.168.152.5/32, 192.168.150.0/24, 2001:db8:34:b::5/128
latest handshake: 1 minute, 14 seconds ago
transfer: 108.62 KiB received, 164.04 KiB sent
persistent keepalive: every 25 seconds

peer: m***
endpoint: ipv4-telefonen-min-får-av-4g:6120
allowed ips: 192.168.152.4/32, 2001:db8:34:b::4/128
latest handshake: 4 minutes, 25 seconds ago
transfer: 110.88 KiB received, 229.74 KiB sent
persistent keepalive: every 25 seconds

peer: /****
allowed ips: 192.168.152.2/32, 2001:db8:34:b::2/128
persistent keepalive: every 25 seconds

peer: e**
allowed ips: 192.168.152.3/32, 2001:db8:34:b::3/128
persistent keepalive: every 25 seconds
Vis hele sitatet...
Jeg har faktisk også litt problemer med ipv4-routing, men dette løser jeg kanskje hvis jeg klarer å forstå hva jeg har glemt i ipv6-oppsettet. Jeg skal tenke på ipv4-problemet senere. Nevner uansett hva ipv4-problemet er:
Wireguard-containeren kan pinge IP-adresser i subnettet på routeren hjemme hos meg (192.168.150.0/24), men klientene på WG-subnettet kan ikke det. Alle ip routes for ipv4 er tilsvarende ipv6.

Her er wg0 fra routeren hjemme hos meg, den som har b::5:
Sitat av router-hos-meg
interface: wg0
public key: E****
private key: (hidden)
listening port: 51820

peer: Q****
endpoint: hostmaskin-ipv4:51420
##Hostmaskinen portforwarder til wireguard-containerens LAN ipv4 (192.168.151.5)
allowed ips: 192.168.152.1/32, 2001:db8:34:b::1/128, 192.168.151.0/24
latest handshake: 40 seconds ago
transfer: 9.77 GiB received, 510.93 MiB sent
persistent keepalive: every 25 seconds
Vis hele sitatet...
Sist endret av Tysteren; 5. januar 2022 kl. 15:34.
Trigonoceps occipita
vidarlo's Avatar
Donor
Du ruter kun et /128 over eg, dvs. kun den eine ipen. Du vil som minimum rute heile /48-nettet ditt via wg, og muligens ::/0 og...

For ipv4 er problemet tilsvarande; du ruter ikkje 192.168.150.0/24...
Sist endret av vidarlo; 5. januar 2022 kl. 16:48. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Sitat av vidarlo Vis innlegg
Du ruter kun et /128 over eg, dvs. kun den eine ipen. Du vil som minimum rute heile /48-nettet ditt via wg, og muligens ::/0 og...

For ipv4 er problemet tilsvarande; du ruter ikkje 192.168.150.0/24...
Vis hele sitatet...
Beklager, men jeg klarer ikke helt å tolke dette svaret på riktig måte, kanskje det har skjedd en misforståelse her. Jeg skal prøve å gå gjennom dette på denne måten:

Du sier at jeg kun router et /128 over Wireguard. Da tenker jeg at du sikter til oppføringen 2001:db8:34:b::5/128 i denne delen. (Og 192.168.152.5/24 for den saks skyld)
Sitat av Wireguard-container
peer: E***
endpoint: ipv4-hjem-til-meg:51820
allowed ips: 192.168.152.5/32, 192.168.150.0/24, 2001:db8:34:b::5/128
latest handshake: 1 minute, 14 seconds ago
transfer: 108.62 KiB received, 164.04 KiB sent
persistent keepalive: every 25 seconds
Vis hele sitatet...
Men dette tror jeg egentlig ikke at er feil, fordi det er altså sånn at wireguard-serveren "deler ut" adressene 192.168.152.5 og 2001:db8:34:b::5 til denne peer-en, som er routeren hjemme hos meg. Routeren hjemme hos meg er altså "klienten" i dette tilfellet, og skal ha de IP-adressene. Det blir feil å route hele /24 og /64 subnettet dit, fordi alle andre "klienter" på wireguard-serveren skal også ha IP-adresser fra samme subnett.

Mulig du oppfattet dette som at routingen skulle gå andre veien, at jeg altså deler ut en /64-blokk fra hjemmenettverket mitt til wireguard-serveren?

Hjemmenettverket mitt bruker subnettet 192.168.150.0/24, og det er dette subnettet jeg vil at alle andre klienter på Wireguard-serveren (som får 192.168.152.x ip-adresser) skal ha tilgang til også. Dessuten skal også hele internett kunne få kontakt med routeren hjemme hos meg ved å bruke IPv6-adressen 2001:db8:34:b::5 (som kommer fra /48-subnettet til hostmaskinen min hvor wireguard-containeren står), noe som altså ikke er tilfelle.

Man får derimot kontakt med wireguard-containerens ip 2001:db8:34:a::3, som også kommer fra samme /48 subnett som 2001:db8:34:b::5

Og forresten, man får også kontakt med Wireguard-serverens IPv6-adresse 2001:db8:34:b::1, men ikke klientene som den har.

Eller er det jeg som misforstår deg?
Sist endret av Tysteren; 5. januar 2022 kl. 22:50.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av Tysteren Vis innlegg
Du sier at jeg kun router et /128 over Wireguard. Da tenker jeg at du sikter til oppføringen 2001:db8:34:b::5/128 i denne delen. (Og 192.168.152.5/24 for den saks skyld)
Vis hele sitatet...
Forsåvit korrekt.
Sitat av Tysteren Vis innlegg
Men dette tror jeg egentlig ikke at er feil, fordi det er altså sånn at wireguard-serveren "deler ut" adressene 192.168.152.5 og 2001:db8:34:b::5 til denne peer-en, som er routeren hjemme hos meg. Routeren hjemme hos meg er altså "klienten" i dette tilfellet, og skal ha de IP-adressene. Det blir feil å route hele /24 og /64 subnettet dit, fordi alle andre "klienter" på wireguard-serveren skal også ha IP-adresser fra samme subnett.
Vis hele sitatet...
Nei, det blir ikkje feil. Poenget med vpn er at du skal nå det som er i andre enden. Då må du fortelje kva som er i andre enden.

For klientane dine så er 192.168.152.0/24, 192.168.150.0/24 og 2001:db8:34::/48 i andre enden. På den enden som du kaller server (som strengt tatt bare er ein ruter i oppsettet; WG differensierer ikkje klient og server), så er det heilt rett at du gjerne skal ha /32 og /128 som rute.

Men på klientane dine er det FEIL. Dei skal ha ei rute som fortel kva som skal gå over tunnellen.

Korleis elles skal dei vite kor dei skal sende trafikk?

Fra man wg:

Kode

       •      AllowedIPs — a comma-separated list of IP (v4 or  v6)  addresses
              with CIDR masks from which incoming traffic for this peer is al-
              lowed and to which outgoing traffic for this peer  is  directed.
              The  catch-all  0.0.0.0/0 may be specified for matching all IPv4
              addresses, and ::/0 may be specified for matching all  IPv6  ad-
              dresses. May be specified multiple times.
Sist endret av vidarlo; 5. januar 2022 kl. 23:51. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Takk for at du tar deg bryet med å svare meg, men nå tror jeg kanskje at jeg bør legge frem konfigurasjonsfilene og være litt mer spesifikk.

Må først nevne at denne konfigurasjonen fungerte feilfritt da Wireguard var på host-maskinen, altså en fysisk maskin. Nå er den jo på en container, og da fungerer det plutselig ikke. Forresten så har jeg gjort et par endringer siden jeg skrev førstepost, så hvis du oppdager avvik, så vet du hvorfor.

Først og fremst, Wireguard-konfigurasjonen som ligger på Wireguard-containeren:
Sitat av Wireguard-container wg0
[Interface]
Address = 192.168.152.1/24, 2001:db8:34:b::1/64
ListenPort = 51420
PrivateKey = 4****

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i %i -j ACCEPT; ip6tables -A FORWARD -o %i -j ACCEPT;

PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i %i -j ACCEPT; ip6tables -D FORWARD -o %i -j ACCEPT;

#Dette er tilkoblingen til routeren hos meg:
[Peer]
PublicKey = E****
AllowedIPs = 192.168.152.5/32, 192.168.150.0/24, 2001:db8:34:b::5/128
PersistentKeepalive = 25
Endpoint = ip.hjemmehosmeg.no:51820

#Her ser vi at jeg har lagt inn 192.168.152.5/32 og 192.168.150.0/24, samt. IPv6-adressen 2001:db8:34:b::5/128.

#Wireguard-containeren kan kontakte alle IP-adresser innenfor 192.168.150.0/24-subnettet, og selvfølgelig også IPv6-adressen 2001:db8:34:b::5.

#Problemet er at ingen andre enheter på internett kan kontakte 2001:db8:34:b::5.

#Dette tilkoblingen til min egen PC:
[Peer]
PublicKey = /****
AllowedIPs = 192.168.152.2/32, 2001:db8:34:b::2/128
PersistentKeepalive = 25

#Her ser vi at jeg har lagt inn 192.168.152.2/24 og IPv6-adressen 2001:db8:34:b::2/128.

#Wireguard-containeren kan kontakte både 192.168.152.2 og 2001:db8:34:b::2.

#Problemet er at ingen andre enheter på internett kan kontakte IPv6-adressen 2001:db8:34:b::2
Vis hele sitatet...
Og så viser jeg frem konfigurasjonsfilen fra routeren hjemme hos meg, det er en Edgerouter:
Sitat av Routeren hjemme hos meg
wireguard wg0 {
address 192.168.152.5/24
address 2001:db8:b::5/64
listen-port 51820
mtu 1420
peer Q**** {
allowed-ips 192.168.152.1/32
allowed-ips 2001:db8:34:b::1/128
allowed-ips 192.168.151.0/24
endpoint wireguard.container.no:51420
persistent-keepalive 25
}
private-key 2****
route-allowed-ips true

#Her ser vi at jeg har lagt inn IPv4-subnettene 192.168.151.0/24 og 192.168.152.1/32.
#Fra routeren kan jeg fint kontakte alle IP-adressene i 192.168.151.0/24-subnettet og IP-adressen 192.168.152.1.

#Det er også mulig å kontakte 2001:db8:34:b::1.
#Det er her jeg ser forskjellen. Som tidligere nevnt så kan ingen andre på internett kontakte 2001:db8:34:b::2 og 2001:db8:34:b::5.
#Forskjellen er at det er mulig for alle på internett å kontakte 2001:db8:34:b::1.

#Routeren i seg selv har 192.168.150.1/24 som IP-adresse på eth0. Jeg vil ha tilgang til dette subnettet ved å koble meg til Wireguard-containeren.
Vis hele sitatet...
Så, min egen PC sin konfigurasjon:
Sitat av Min egen PC
[Interface]
PrivateKey = A****
Address = 192.168.152.2/24, 2001:db8:34:b::2/64

[Peer]
PublicKey = Q****
AllowedIPs = 192.168.152.1/24, 192.168.151.1/24, 192.168.150.1/24, 2001:db8:34:b::1/128
Endpoint = wireguard.container.no:51420
PersistentKeepalive = 25

#Her ser vi at jeg har lagt inn alle subnett i konfigen. Jeg kan kontakte subnettene 192.168.151.1/24 og 192.168.152.1/24 uten problemer, jeg kan kontakte routeren hjemme hos meg ved å bruke IP-adressen 192.168.152.5.
Jeg kan imidlertid IKKE kontakte 192.168.150.1/24-subnettet.
Det er det som er problemet. Wireguard-containeren må route / videresende meg videre til hjemmenettet mitt.
Og selvfølgelig route ipv6-adressene riktig.
Vis hele sitatet...
Grunnen til at jeg ikke router hele ipv6-subnettet mellom wireguard-peers (ved å bruke /64 fremfor /128) er fordi jeg vil få verifisert at de kan få kontakt med hverandre over internett uavhengig av tunnelen uansett.
Minner om at IPv6-adressene er offentlige, og ikke lokale.
Jeg har byttet ut IPv6-adressene til eksempel-adresser her, etter at du ga meg en lenke til en Wikipedia-side i forrige tråd
Sist endret av Tysteren; 6. januar 2022 kl. 13:09.