GNU/Linux >> Znalost Linux >  >> Panels >> OpenVPN

Nastavení serveru OpenVPN s Ubuntu a viskozitou

Tato příručka vás provede kroky souvisejícími s nastavením serveru OpenVPN na hostiteli Ubuntu, který vám umožní bezpečný přístup k vaší domácí/kancelářské síti ze vzdáleného místa a volitelně přes ni posílá veškerý síťový provoz, abyste měli přístup k internetu. také bezpečně.

Před použitím této příručky důrazně doporučujeme přečíst si náš článek Úvod do provozu serveru OpenVPN.

Příprava

Pro tuto příručku předpokládáme:

  • Již jste nainstalovali nejnovější verzi Ubuntu (20.04 v době psaní tohoto článku)
  • Máte root přístup k této instalaci
  • Tato instalace Ubuntu je čistá instalace
  • Znáte názvy svých síťových rozhraní (pokyny níže)
  • K serveru máte přístup přes terminál nebo SSH
  • Můžete kopírovat soubory na serveru i mimo něj pomocí protokolu SCP nebo podobného protokolu
  • Na klientském zařízení již máte nainstalovanou kopii aplikace Viscosity

Pokud si potřebujete stáhnout a nainstalovat kopii Ubuntu, informace naleznete na http://www.ubuntu.com/download. Nebudeme se zabývat podrobnostmi nastavení instance Ubuntu, mnoho průvodců lze nalézt online. Pokud používáte jinou verzi Ubuntu, je velmi pravděpodobné, že mnoho nebo dokonce všechny kroky popsané v této příručce budou stále platit. Pokud chcete nastavit server OpenVPN na jiném operačním systému, podívejte se prosím na naše další průvodce.

Pokud ještě nemáte na svém klientovi nainstalovanou kopii Viscosity, podívejte se prosím na tuto instalační příručku pro instalaci Viscosity (Mac | Windows).

Pokud jste v SSH nebo SCP noví, v našem Úvodním průvodci máme několik pokynů.

Chcete-li získat název primárního síťového rozhraní (WAN Access), spusťte na svém serveru Ubuntu následující:
ip route | grep default | awk '{print $NF}'

Máte-li druhé síťové rozhraní pro přístup k počítačům v místní síti, budete při nastavování brány firewall a směrování potřebovat také jeho název.

Podpora

Bohužel nemůžeme poskytnout žádnou přímou podporu pro nastavení vašeho vlastního OpenVPN serveru. Tuto příručku poskytujeme jako laskavost, která vám pomůže začít s vaší kopií Viscosity a využít ji na maximum. Důkladně jsme otestovali kroky v této příručce, abychom zajistili, že pokud budete postupovat podle pokynů uvedených níže, měli byste být na dobré cestě využívat výhod provozování vlastního serveru OpenVPN.

Pro další informace nebo pomoc s Ubuntu je k dispozici řada komunitních zdrojů na https://www.ubuntu.com/community

Začínáme

Nejprve aktualizujte svůj server:

sudo apt-get update
sudo apt-get -y upgrade

Po dokončení upgradů balíčku můžete být informováni, že budete muset restartovat. Pokud ano, pokračujte a restartujte, poté se přihlaste a pokračujte.

Chcete-li nastavit server OpenVPN, musíme nainstalovat OpenVPN. Spusťte následující příkazy a počkejte na dokončení každého z nich, abyste do apt přidali úložiště OpenVPN, aby se OpenVPN automaticky nainstalovalo a aktualizovalo, a poté nainstalujte OpenVPN:

sudo wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg | sudo apt-key add -
echo "deb http://build.openvpn.net/debian/openvpn/stable focal main" | sudo tee /etc/apt/sources.list.d/openvpn-aptrepo.list
Poznámka:Pokud používáte starší distribuci Ubuntu, nahraďte „focal“ ve výše uvedeném příkazu „xenial“, pokud Ubuntu 16.04, nebo „bionic“, pokud Ubuntu 18.04.

sudo apt-get update
sudo apt-get -y install openvpn


Generování konfigurací, certifikátů a klíčů

Dalším krokem je vygenerování vašich konfigurací pro server a vaše klienty, stejně jako certifikáty k nim. Můžete to snadno provést podle Průvodce vytvářením certifikátů a klíčů. Můžete buď postupovat podle sekce pro Ubuntu a zkopírovat konfigurace klienta ze serveru (doporučujeme to), nebo si vše vygenerovat na svém PC nebo Mac a zkopírovat server složku, která je vygenerována na vašem serveru Ubuntu.

Pokud používáte výchozí DNS Server (10.8.0.1), budete si muset DNS server nastavit sami, pokyny jsou na konci tohoto článku. Místo toho doporučujeme použít existující DNS server, veřejně dostupný DNS server, jako je Google (8.8.8.8 a 8.8.4.4), je nejjednodušší.

Jakmile vygenerujete své konfigurace, budete muset přenést konfiguraci serveru na váš server nebo přenést konfigurace klienta ze serveru. Pokud máte místní přístup, USB disk je nejjednodušší. Pokud ne, máme nějakou nápovědu k přenosu souborů pomocí SCP v našem Úvodním průvodci.

Přesměrování IP

Abychom mohli předávat naše požadavky procházející přes VPN, chceme, aby server OpenVPN fungoval jako router. Proto musíme povolit předávání IP adres. V terminálu můžeme povolit předávání IP na serveru Ubuntu zadáním:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Při každém restartu serveru se však tento příkaz vrátí zpět. Aby se to nestalo, musíme upravit soubor sysctl.conf pomocí nano. Zadejte:

sudo nano /etc/sysctl.conf

Přejděte dolů do části:

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Odstraňte znak „#“ na začátku řádku, aby se nyní změnil na:

net.ipv4.ip_forward=1

Až budete hotovi, stiskněte ctrl + x pro ukončení nano. Po zobrazení výzvy uložte změny.

Abychom zajistili, že hostitelé v domácí/kancelářské síti mohou najít server VPN, musíme zajistit, aby server odpovídal na jakékoli požadavky ARP:

echo 1 | sudo tee /proc/sys/net/ipv4/conf/ens33/proxy_arp

kde ens33 je síťové rozhraní domácí/kancelářské sítě, pokud máte dvě síťová rozhraní, nebo jinak primární síťové rozhraní (WAN) (další informace naleznete v části Příprava).

Pravidla brány firewall

Použijeme Uncomplicated Firewall (ufw), který je ve výchozím nastavení nainstalován na Ubuntu, abychom řídili, jak je provoz předáván přes server OpenVPN. Pokud je váš server Ubuntu externě přístupný (má přímé připojení k internetu s vlastní IP adresou, bez routeru), měli byste použít ufw k povolení portu OpenVPN, který jsme nastavili výše (1194). V opačném případě nastavíme ufw tak, aby povolil veškerý provoz a nakonfigurujeme nastavení pro směrování.

Pokud váš server Ubuntu NEPOTREBUJE k ochraně ufw (tj. je za routerem nebo má nastaven jiný firewall), musíte nastavit výchozí vstupní pravidlo, aby veškerý provoz ve výchozím nastavení procházel přes ufw. K tomu musíme upravit konfigurační soubor.

  1. Otevřete tento soubor v nano:
    sudo nano /etc/default/ufw
  2. Přejděte dolů do části:
    # Set the default input policy to ACCEPT, DROP, or REJECT. Please note that if
    # you change this you will most likely want to adjust your rules.
    DEFAULT_INPUT_POLICY="DROP"
  3. Protože náš server nebude používat tento firewall k ochraně, změňte toto z "DROP" na "ACCEPT"
  4. Přejděte dolů do části:
    # Set the default forward policy to ACCEPT, DROP or REJECT.  Please note that
    # if you change this you will most likely want to adjust your rules
    DEFAULT_FORWARD_POLICY="DROP"
  5. Změňte dopřednou politiku z „DROP“ na „ACCEPT“
  6. Stiskněte ctrl + x pro ukončení nano. Po zobrazení výzvy uložte změny.

Pokud váš server Ubuntu POTŘEBUJE ufw k jeho ochraně , musíte mu sdělit, které porty má povolit, protože má výchozí vstupní a dopředné zásady DROP. Pokud spouštíte server OpenVPN z nějakého vzdáleného umístění, budete muset do něj SSH změnit jakákoli nastavení. Proto musíme firewallu sdělit, aby povolil provoz SSH.

  1. Do terminálu zadejte následující:
    sudo ufw allow ssh
  2. Provoz VPN, který odešleme na server OpenVPN, bude přes UDP na portu 1194, takže zadejte do terminálu:
    sudo ufw allow 1194/udp

Pokud na vašem serveru Ubuntu běží další služby, musíte se ujistit, že povolíte jejich provoz také přes ufw. Ujistěte se, že jste přidali všechna povolená pravidla pro jakékoli další porty, na kterých váš server Ubuntu naslouchá (jako je mediální server Plex nebo možná váš vlastní e-mailový server).

Další, bez ohledu na nastavení sítě , musíte nastavit pravidla směrování pro ufw.

  1. Otevřete konfigurační soubor ufw v nano:
    sudo nano /etc/ufw/before.rules
  2. Přesuňte kurzor pod sekci:
    #
    # rules.before
    #
    # Rules that should be run before the ufw command line added rules. Custom
    # rules should be added to one of these chains:
    # ufw-before-input
    # ufw-before-output
    # ufw-before-forward
  3. Vložte následující:
    # START OPENVPN RULES
    # NAT table rules
    *nat
    :POSTROUTING ACCEPT [0:0]

    # Uncomment the next POSTROUTING line and replace ens33 with the name
    # of your Local Network Interface if you have a second network interface
    # for accessing machines on your local network
    # Allow OpenVPN client to communicate with local home network
    #-A POSTROUTING -s 10.8.0.0/24 -d 192.168.0.0/24 -o ens32 -j MASQUERADE

    # Allow traffic from OpenVPN client to your WAN and/or LAN via ens33
    -A POSTROUTING -s 10.8.0.0/24 -o ens33 -j MASQUERADE
    COMMIT
    # END OPENVPN RULES
    • Nahraďte ens33 s názvem vašeho primárního síťového rozhraní, pokud se liší (další informace naleznete v části Příprava)
  4. Přesuňte kurzor pod sekci:
    # Don't delete these required lines, otherwise there will be errors
    *filter
    :ufw-before-input - [0:0]
    :ufw-before-output - [0:0]
    :ufw-before-forward - [0:0]
    :ufw-not-local - [0:0]
    # End required lines
  5. Vložte následující:
    #Accept all traffic to and from VPN
    -A ufw-before-input -i tun+ -j ACCEPT
    -A ufw-before-output -i tun+ -j ACCEPT

    # Forward traffic to and from the VPN
    -A ufw-before-forward -s 10.8.0.0/24 -j ACCEPT
    -A ufw-before-forward -d 10.8.0.0/24 -j ACCEPT
  6. Stiskněte ctrl + x pro ukončení nano. Po zobrazení výzvy uložte změny.

Ufw je nyní připraven k aktivaci.

  1. V terminálu zadejte:
    sudo ufw enable
  2. Pokud vstoupíte do této instance Ubuntu pomocí SSH, zobrazí se výzva:
    Command may disrupt existing ssh connections. Proceed with operation (y|n)?
    Na které byste měli odpovědět y .

Poté se zobrazí následující výstup (bez ohledu na SSH nebo ne)

Firewall is active and enabled on system startup

Spuštění serveru OpenVPN

V tomto bodě jsou základy hotové. Konfigurace vašeho serveru a soubory by měly být na vašem serveru, buď vygenerované na serveru, nebo zkopírované z místa, kde jste je vygenerovali.

Nejprve zkopírujte konfigurační soubory serveru do adresáře OpenVPN:

sudo cp /path/to/configs/server/* /etc/openvpn/

Nyní spusťte svůj server a povolte jeho spuštění i po restartu.

sudo systemctl enable [email protected]
sudo systemctl start [email protected]

Chcete-li zkontrolovat stav serveru, zadejte:

sudo systemctl status [email protected]

Na které má odpovědět:

Active: active (running) since Thu 2017-06-01 17:06:29 PDT; 4s ago

Pokud server není uveden jako aktivní (běžící), měli byste vidět výstup protokolu zobrazující, co se pokazilo.

Váš server OpenVPN je nyní spuštěn a připraven, abyste se k němu mohli připojit.

Nastavení routeru

Pokud je váš server Ubuntu přímo přístupný , pak můžete tuto sekci přeskočit . Neexistuje žádný router, který by bylo možné konfigurovat.

Pokud je však váš server Ubuntu za routerem (například na vaší domácí WiFi), budete muset router nakonfigurovat tak, aby povoloval provoz VPN. Další informace naleznete v našem článku Úvod do provozu serveru OpenVPN.

Nastavení viskozity

Posledním krokem je nastavení viskozity. Díky openvpn-generate je to stejně snadné jako import a připojení.

Import

Zkopírujte svůj soubor *.visz, který jste vytvořili pomocí openvpn-generate, do počítače Mac nebo Windows s nainstalovanou viskozitou a dvakrát na soubor klikněte. Měli byste vidět výzvu, že konfigurace byla úspěšně importována.

Připojení a používání připojení VPN

Nyní jste připraveni se připojit. Kliknutím na ikonu Viscosity na liště nabídky macOS nebo na systémové liště Windows otevřete nabídku Viscosity Menu, vyberte připojení, které jste importovali, a Viscosity se připojí.

Chcete-li zkontrolovat, zda je VPN v provozu, můžete otevřít okno Podrobnosti z nabídky Viskozita. To vám umožní zobrazit podrobnosti o připojení, provoz a protokol OpenVPN.



To je vše, nastavili jste svůj vlastní server OpenVPN. Gratulujeme, nyní můžete zdarma využívat výhod provozování vlastního serveru OpenVPN!

Základní server DNS

Pokud se rozhodnete provozovat svůj vlastní server DNS pro klienty, následuje příklad nastavení pro dnsmasq. Nainstalujte dnsmasq pomocí následujícího příkazu:

sudo apt-get install -y dnsmasq

Nejprve musíte zakázat instanci dnsmasq, kterou poskytuje NetworkManager ve výchozím nastavení. Tato výchozí instance je omezená a nedovolí nám naslouchat požadavkům DNS přes VPN.

  1. Otevřete konfiguraci NetworkManager:
    nano /etc/NetworkManager/NetworkManager.conf
  2. Zakomentujte řádek umožňující dnsmasq přidáním znaku '#' na začátek řádku:
    dns=dnsmasq
  3. Stiskněte ctrl + x pro ukončení nano. Po zobrazení výzvy uložte změny.

Dále musíme upravit některé výchozí konfigurace.

  1. Vytvořte zálohu původní konfigurace dnsmasq:
    cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
  2. Nastavte DNS server, aby naslouchal požadavkům ze serveru Ubuntu (127.0.0.1) a z VPN (10.8.0.1):
    echo -e "listen-address=127.0.0.1, 10.8.0.1\nbind-interfaces" > /etc/dnsmasq.conf
  3. Zabraňte našim požadavkům DNS v zahlcení kořenových serverů DNS špatnými požadavky:
    echo -e "domain-needed\nbogus-priv" >> /etc/dnsmasq.conf
  4. K vyřešení požadavků použijte servery DNS společnosti Google (můžete použít službu překladu DNS dle vlastního výběru):
    echo -e "server=8.8.8.8\nserver=8.8.4.4" >> /etc/dnsmasq.conf
  5. Restartováním služby dnsmasq aktivujte naše změny:
    service dnsmasq restart

Chcete-li zkontrolovat, zda server DNS naslouchá na požadovaných adresách, zadejte:

netstat -anup

Měli byste vidět seznam adres, včetně 127.0.0.1 a 10.8.0.1:

Proto Recv-Q Send-Q Local Address         Foreign Address       State     PID/Program name
...
udp        0      0 127.0.0.1:53          0.0.0.0:*                       54892/dnsmasq   
udp        0      0 10.8.0.1:53           0.0.0.0:*                       54892/dnsmasq   
...

Nakonec musíme zajistit, aby se dnsmasq spustil po OpenVPN při spuštění systému. Ve výchozím nastavení dnsmasq běží před OpenVPN, což mu brání v nastavení DNS serveru pro VPN, protože VPN zatím neexistuje.

  1. Vytvořte zálohu původního souboru:
    cp /etc/rc.local /etc/rc.local.bak
  2. Zadejte:
    echo -e "service dnsmasq restart\nexit 0" >> /etc/rc.local
  3. Nastavte tento skript jako spustitelný:
    chmod +x /etc/rc.local

Nyní jsme dokončili nastavení serveru DNS.


OpenVPN
  1. Instalace a nastavení serveru Plex Media Server na Ubuntu

  2. Jak nastavit a nakonfigurovat server OpenVPN na Ubuntu 22.04

  3. Nainstalujte a nastavte OpenVPN Server na Ubuntu 20.04

  1. Nastavení Amavis a ClamAV na poštovním serveru Ubuntu

  2. Nastavení serveru Obfuscation s Obfsproxy a Viscosity

  3. Nastavení serveru OpenVPN s CentOS a viskozitou

  1. Nastavení serveru OpenVPN s DD-WRT a viskozitou

  2. Nastavení serveru OpenVPN s Netgear a viskozitou

  3. Nastavení serveru OpenVPN s webovou autentizací Okta Single Sign-on a viskozitou