Cum sa instalez un VPN (openvpn) pe un VPS (instanta google cloud)? Eu -> VPS -> VPN -> Internet

M-am conectat cu ssh pe o instanta Ubuntu in google cloud folosind o cheie privata.
Odata acolo m-am conectat la vpn folosind sudo openvpn --config myconfig.ovpn.
Imi arat cum se incarca chestii si dupa freeze, asta fiind ultima linie:
hu Sep 24 05:41:54 2020 /sbin/ip link set dev tun0 up mtu 1500
Cand incerc sa ma reconectez cu ssh nu merge. Dupa ce-i dau reset la instanta merge sa ma reconectez.

Simt ca trebuie sa mai fac ceva dar cunostintele mele de networking sunt limitate. Am cautat pe google dar n-am gasit (sau n-am vazut) solutia la problema asta (Eu -> VPS -> VPN -> Internet).
Help please?

La vpn trebuie facuta tabela de rutare.

Din pacate imi lipsesc conceptele de baza ptr. a intelege articolul cu pricina. Tot ce stiu eu e:

  • ip-ul meu
  • ip-ul masinii virtuale
    …restul de termeni (subnet, routing, etc) ar putea la fel de bine sa fie in chineza.

Am gasit un alt articol si am incercat pasii enumerati acolo (ip route...) dar tot nu functioneaza.

Asta-i rezultatul comenzii ifconfig pe masina virtuala din instanta ec2 de pe amazon:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001
        inet 172.31.7.20  netmask 255.255.240.0  broadcast 172.31.15.255
        inet6 fe80::99:c8ff:fe6f:1826  prefixlen 64  scopeid 0x20<link>
        ether 02:99:c8:6f:18:26  txqueuelen 1000  (Ethernet)
        RX packets 962  bytes 243013 (243.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1156  bytes 143770 (143.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 124  bytes 9768 (9.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 124  bytes 9768 (9.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Ar fi prea mult sa cer niste comenzi mura-n gura? :stuck_out_tongue:
[edit] m-am uitat un pic peste ebook-ul si networking essential asta dar tot nu i-am dat de cap.
Inteleg ca trebuie sa adaug niste entries in fisierul .ovpn dar care ip-uri si subnets si care comenzi (doar ifconfig sau si route add) nu stiu exact. FML.

Fuck yeah.

Am reusit pana la urma. Mi-a luat doar vreo 7 ore (dar macar am mai invatat un pic de networking) :stuck_out_tongue:
Am urmat pasii din linkul asta cu o mica mare modificare - acolo zice sa folosesti IP-ul public al VPS-ului ceea ce-i bullshit. Tre’ sa folosesti IP-ul privat al vps-ului (in cazul meu ec2 pe aws).

  1. ruleaza ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001
        inet 172.31.32.48  netmask 255.255.240.0  broadcast 172.31.47.255
        inet6 fe80::8a9:dcff:feda:cfa0  prefixlen 64  scopeid 0x20<link>
        ether 0a:a9:dc:da:cf:a0  txqueuelen 1000  (Ethernet)
        RX packets 3074  bytes 300349 (300.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2522  bytes 421611 (421.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 180  bytes 14724 (14.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 180  bytes 14724 (14.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • Ip-ul intern de mai sus este la categoria inet 172.31.32.48
  • netmask-ul este la categoria netmask 255.255.240.0. asta inseamna ca public subnet-ul este 172.31.32.0/20 (cred ca se putea scrie si cu vechea notatie 172.31.32.0/255.255.240.0 dar nu sunt sigur)

ca sa afli gateway-ul ruleaza ip route

default via 172.31.32.1 dev eth0 proto dhcp src 172.31.32.48 metric 100 
172.31.32.0/20 dev eth0 proto kernel scope link src 172.31.32.48 
172.31.32.1 dev eth0 proto dhcp scope link src 172.31.32.48 metric 100 
  • ce urmeaza dupa default via e gateway-ul. in cazul asta 172.31.32.1

Deci
ip: 172.31.32.48
ip subnet: 172.31.0.0/20
gateway 172.31.32.1

Template-ul este:

ip rule add table 128 from $ip
ip route add table 128 to $ip_subnet dev eth0
ip route add table 128 default via $gateway

Comanda finala este

ip rule add table 128 from 172.31.32.48
ip route add table 128 to 172.31.0.0/20 dev eth0
ip route add table 128 default via 172.31.32.1

Dupa asta poti sa te conectezi la vpn pe vps fara sa pierzi conexiunea.
Dupa reboot trebuie sa bagi din nou comenzile - acum ma uit si eu cum sa fac asta permanenta.

[Edit] ciudat, nu merge cu sudo crontab -e si @reboot..

4 Likes

Pe vremuri era “Evrika”

Ia sa-l fi pus regele pe Arhimede sa rezolve niste probleme mistice in Linux in loc de problema banala cu volumul coroanei. Pun pariu ca ar fi zis “Fuck Yeah”.
:grinning:

1 Like