WSL 2 on VPN (AnyConnect 4.10) and wi-fi:
Connect VPN
In admin powershell:
2.1Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 1000
2.2Get-NetIPInterface | where {$.InterfaceAlias -eq 'Wi-Fi' -or $.InterfaceAlias -eq 'Ethernet 2' -or $.InterfaceAlias -eq 'vEthernet (WSL)'} | Set-NetIPInterface -Forwarding Enabled -Verbose
2.3 Verify by runningGet-NetIPInterface | select ifIndex,InterfaceAlias,AddressFamily,ConnectionState,Forwarding,InterfaceMetric | Sort-Object -Property IfIndex | Format-Table
check that forwarding is enabeled on wsl/wifi/anyconnect (Ethernet 2)In Linux shell:
3.1sudo bash -c "printf '[network]\ngenerateResolvConf = false' " > /etc/wsl.conf
3.2sudo rm /etc/resolv.conf
3.3 Add in ~/.bashrc:alias vpn_off="sudo bash -c "printf 'nameserver 8.8.8.8' > /etc/resolv.conf""
alias vpn_on="sudo bash -c "printf 'nameserver 172.16.254.82\nnameserver 172.16.254.247' > /etc/resolv.conf""
3.4 source ~/.bashrc
3.5 Run "vpn_on" when connected to vpn and "vpn_off" when disconnected from vpn
NOTE:
Punkter som måste köras varje gång man gör connect mot VPN:
2.1, 3.5 (osäker om 2.2 är beständigt efter omstart av dator)
Punkter som måste köras varje gång man gör disconnect mot VPN:
3.5
Övriga punkter är engångs grejer.
Förbättring vore att göra kort-kommande även för 2.1/2.2
vpn_on adresserna är tagna från de dns:er som används när man är uppkopplad mot vpn.
Dessa kan verifieras i powershell genom att köra ipconfig /all
InterfaceMetric (punk 2.1) är testad och 1000 verkar funka bra för mig då dns uppslag blir snabba i båda windows/linux.
När man kör docker och vpn kan --network="host"
vara en bra flagga (se docker dokumentation för mer info).
Dessa inställningar är lite klipp och klister från olika forum samt trial and error. Det kanske finns något smidigare sätt att få det att fungera?