Vítej, Host. Prosím přihlaš se nebo se zaregistruj.
07.12.2023, 18:11:01

Domů Nápověda Vyhledávání Přihlásit Registrovat
 
Fórum k produktům firmy ELSACO Kolín  

+  PROMOS fórum
|-+  HW
| |-+  CCPU-34
| | |-+  Jak připojit několik CCPU-3X k linuxovému serveru pomocí VPN?
0 uživatelů a 1 Host prohlíží toto téma. « předchozí další »
Stran: [1] Dolů Tisk
Autor Téma: Jak připojit několik CCPU-3X k linuxovému serveru pomocí VPN?  (Přečteno 10259 krát)
petrm
moderátor+

Příspěvků: 12


« kdy: 07.04.2017, 11:07:13 »

Dotaz zákazníka

Máme linuxový server, do kterého můžeme přesměrovat spojení z veřejné internetové adresy. Dále máme několik různě umístěných centrál CCPU-3X, které sice mohou na internet, ale nemají veřejné IP-adresy. Chtěli bychom je připojit prostřednictvím VPN k serveru, abychom s nimi mohli vzdáleně pracovat. Dále bychom chtěli nějak zajistit možnost webového přístupu do centrál z internetu. Jak na to?
Zaznamenáno
petrm
moderátor+

Příspěvků: 12


« Odpověď #1 kdy: 07.04.2017, 11:31:08 »

Jako virtuální privátní síť doporučuji použít OpenVPN. Tím získáte přístup do centrál ze serveru a případně i z dalších stanic ve firmě. Ohledně webového přístupu z internetu do centrál se nabízí řešení takové, že se uživatelé z internetu budou připojovat k serveru (je dostupný z internetu) na určené porty a tato spojení budou přesměrována a přenesena pomocí VPN do centrál, webové stránky pak budou putovat stejnou cestou zpět k uživatelům.
Nastavení tohoto systému už není tak jednoduché, jako v ukázce základního použití OpenVPN v návodu k sitím v CCPU-3X. Celý postup je uveden dále.

Příprava firemního vstupního routeru z internetu:
Pro OpenVPN bude využit protokol UDP na portu 1194, musí být tedy port UDP 1194 při přístupu z internetu přesměrován do serveru s OpenVPN.
Klientské CCPU-3X nebudou přímo veřejně přístupné z internetu, pro webový přístup do nich využijeme veřejnou dosažitelnost serveru a vytvořená spojení OpenVPN. Na vstupním routeru proto přesměrujeme nějaký rozsah portů TCP (třeba porty 8002-8254) do serveru, který dále přesměruje jednotlivá spojení k odpovídajícím klientům CCPU-3X prostřednictvím vytvořených spojení OpenVPN.
Klientské CCPU-3X budou plně dosažitelné ze serveru. Mají-li být dosažitelné i z jednotlivých firemních stanic, bude asi nejlepším řešením odchycení požadavků na ně routerem (defaultní bránou) a přesměrováním na server.
Server bude sloužit jako normální brána mezi firemní sítí a OpenVPN, protože OpenVPN bude (musí) pracovat s jiným adresovým rozsahem (např. 192.168.77.x), než jaký je ve firemní síti.

Konfigurace OpenVPN v serveru:
Do serveru nainstalujeme OpenVPN.
Povolení síťového rozhraní "tuntap" pro OpenVPN:
Do souboru /etc/network/interfaces je potřeba přidat (podobně, jako je to v CCPU-3X):
Kód:
auto tuntap
iface tuntap inet manual
   openvpn OVPNelsaco
Vytvoříme konfigurační soubor serverové strany OpenVPN - soubor /etc/openvpn/OVPNelsaco.conf, který bude obsahovat:
Kód:
# Server OpenVPN.
mode server
# Server pto TLS; už nelze použít jednoduchý statický klíč, ale TLS.
tls-server
dev tuntap
dev-type tun
# Více klientů při spojení typu "tun".
topology subnet
proto udp
port 1194
# Adresace OpenVPN nesmí kolidovat s adresací skutečné sítě.
ifconfig 192.168.77.1 255.255.255.0
# Rozsah adres přidělovaných klientům
# klienti nemohou mít adresy statické, ale musí je přidělovat server OpenVPN
# viz ještě individuální konfigurace klientů.
ifconfig-pool 192.168.77.10 192.168.77.99
# Pro "dh, ca, cert a key" viz klíče a certifikáty.
dh /etc/openvpn/dh2048.pem
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
# Adresář, kde se nacházejí individuální konfigurace klientů, viz podrobnosti.
client-config-dir /etc/openvpn/klienti

# keepalive interval timeout
#    rozepise se na "ping interval" a "ping-restart 2*timeout", pravidelne
#       pinga v "intervalu" a na odpoved ceka "2*timeout", jinak reconnect
#    dale posle do klientu "push ping interval" a "push ping-restart timeout",
#       v klientech tedy uz zadne pingy nemuseji byt
keepalive 10 50

verb 2
log /var/log/openvpn.log
status /var/log/openvpn-status.log

Certifikáty a klíče (platí pro server i klienta):
Buď součástí OpenVPN, nebo jako doporučený balík, jsou skripty "easy-rsa". Ty je potřeba zkopírovat (celý adresář) do /etc/openvpn/, použijí se pro vytvoření klíčů a certifikátů. Z adresáře /etc/openvpn/easy-rsa se spouštějí všechny dále popsané akce, spouštějte je přímo ze shellu, ne z MC či podobného programu (který pro každý skript vytváří novou kopii shellu). Pro generování klíčů musíte být přihlášení jako root. Pokud chcete pouze generovat klíče pro (dalšího) klienta, tak přejděte na sekci Certifikáty a klíče pro klienty (CCPU-3X).
Nejdřív se upraví soubor vars, hlavně proměnné:
Kód:
CA_EXPIRE a KEY_EXPIRE (určují dobu platnosti certifikační autority a klíčů ve dnech, hodnoty 36500 představují 100 let)
KEY_COUNTRY a KEY_PROVINCE (dát asi "CZ")
KEY_CITY (město)
KEY_ORG (organizace)
KEY_EMAIL (něco cokoliv tam musí být)
KEY_OU (organizační jednotka, oddělení?)
.
Potom se vars příkazem
Kód:
. ./vars
spustí.
Certifikační autorita:
Spustí se příkazy
Kód:
./clean-all
./build-ca
pro uklizení a pro vytvoření certifikační autority, při vytváření autority se jen potvrdí nastavené hodnoty (přečtené ze souboru vars). V adresáři keys se vytvářejí soubory, ca.crt se zkopíruje do /etc/openvpn (položka "ca" v konfiguračním souboru).
Certifikát a klíče pro server:
Pak se vytvoří certifikát serveru příkazem
Kód:
./build-key-server nazev_serveru
,
kde nazev_serveru je nějaké označení serveru, klidně může být jen "server" (bez uvozovek), při vytváření se zase jen potvrdí nastavené hodnoty a na konci se dvakrát potvrdí "yes" pro uložení. V keys/ se vytvoří mj. soubory (např.) server.crt a server.key, které je nutno zkopírovat do /etc/openvpn (položky "cert" a "key" v konfiguračním souboru).
Pak se ještě příkazem
Kód:
./build-dh
vytvoří soubor pro výměnu klíčů, vznikne zas v keys/ a nazývá se " dh?..?.pem, opět se zkopíruje do /etc/openvpn (položka "dh" v konfiguračním souboru).
Certifikáty a klíče pro klienty (CCPU-3X):
Certifikát a klíče pro klienta se vygenerují také v serveru příkazem typu
Kód:
./build-key klientA
,
kde "klientA" je nějaký vhodný jednoslovný název klienta, opět se jen potvrdí nastavené hodnoty a na konci se dvakrát potvrdí "yes" pro uložení. V keys/ se vytvoří soubory klientA.crt a klientA.key, které se zkopírují do /etc/openvpn V KLIENTSKÉ STANICI (položky "cert" a "key" v konfiguračním souboru klienta).
Název klienta (klientA) pak souhlasí s položkou "Subject - CN" v klientA.crt a bude identifikátorem klienta při individuální části konfigurace.
Do /etc/openvpn v klientech se musí zkopírovat i certifikační autorita ca.crt ze serveru.
Při dodatečném vytváření certifikátů klienta (někdy za dlouho) bude asi nutné opět nejdřív spustit ". ./vars", aby se nastavily proměnné. Generujte potom jen záležitosti klienta, negenerujte certifikační autoritu, jinak se nespojí buď staří nebo noví klienti (podle toho, zda byste novou "ca" zkopírovali do nastavení serveru, nebo ne)!

Individuální část konfigurace klientů ze serveru:
Při inicializaci spojení OpenVPN posílá server klientům různé informace, např. IP-adresu, adresy DNS apod. Tyto informace mohou být pro všechny klienty shodné, nebo se mohou lišit. Pro klienty mohou být v adresářii určeném položkou "client-config-dir" (v konfiguraci serveru) soubory s inidividuálními hodnotami. Soubor se musí jmenovat tak, jak se klient hlásí serveru, tzn. jménem v "Subject - CN" ze svého *.crt. Toto jméno souhlasí s označením zadaným při vytváření certifikátu klienta (např. klientA z předchozího popisu).
Pro tento příklad tedy v serveru v adresáři /etc/openvpn/klienti bude soubor "klientA" a v něm např.:
Kód:
ifconfig-push 192.168.77.222 192.168.77.1
# Má-li mít klient možnost se připojovat k ostatním klientům, odkomentovat následující:
# push "route 192.168.77.0 255.255.255.0 192.168.77.1"
.
KlientA pak dostane od serveru vždy IP-adresu 192.168.77.222.
Normálně klienti nemají nastaveno routovací pravidlo, aby se dostali na ostatní klienty. Odkomentuje-li se řádek s "push route ...", pak se potřebné pravidlo klientovi pošle. Nebude-li toto pravidlo posláno serverem, může být nastaveno v klientské stanici jiným způsobem.

Konfigurace OpenVPN v klientech:
Povolení síťového rozhraní "tuntap" pro OpenVPN:
V souboru /etc/network/interfaces je potřeba odkomentovat řádky:
Kód:
auto tuntap
iface tuntap inet manual
   openvpn OVPNelsaco
Pak vytvořte konfigurační soubor /etc/openvpn/OVPNelsaco.conf, který bude obsahovat:
Kód:
# Klient OpenVPN.
client
# Veřejná IP-adresa serveru.
remote IP.AD.RE.SA
# "ifconfig" chybí, protože ho klient dostane od serveru
dev tuntap
dev-type tun
proto udp
port 1194
# Certifikační autorita, zkopírována ze serveru.
ca /etc/openvpn/ca.crt
# Certifikát (cert) a klíč (key) klienta, vytvořeny v serveru příkazem "./build-key klientA", viz výše.
cert /etc/openvpn/klientA.crt    
key /etc/openvpn/klientA.key    

nobind
ns-cert-type server
auth-nocache
.

Nastavení linuxového serveru:
Aby server umožnil routování obou sítí (firemní a VPN) a přesměrování webových provozů, je potřeba ještě nastavit několik záležitostí.
Povolení forwardingu (předávání dat mezi síťovými rozhraními):
V serveru je potřeba povolit forwarding paketů, aby vůbec nějaké pakety procházely skrz, odkomentováním nebo přidáním řádku
Kód:
net.ipv4.ip_forward=1
v /etc/sysctl.conf.
Nastavení paketového filtru:
Dále je potřeba nastavit paketový filtr, nejlépe spustitelným (všemi) skriptem přidaným do /etc/network/if-pre-up.d, nazvaným třeba firewall.
Obsah souboru firewall:
Kód:
#! /bin/sh
# Smazani pravidel filtru a natu
iptables -F
iptables -t nat -F

# Presmerovani "webovych" portu k jednotlivym CCPU-34
# Router musi presmerovavat pozadavky na porty napr. 8002-8255 do serveru
# a ten je presmeruja dal na jednotlive CCPU34 podle adresy "xxx".
# vzor: iptables -t nat -A PREROUTING -p tcp --dport 8xxx -j DNAT --to-destination 192.168.77.xxx:80
iptables -t nat -A PREROUTING -p tcp --dport 8222 -j DNAT --to-destination 192.168.77.222:80

# Zapnuti maskarady pro OpenVPN, aby nebylo nutne doplnovat
# routovaci pravidla v klientech.
iptables -t nat -A POSTROUTING -d 192.168.77.0/24 -j MASQUERADE
.
Máte-li už nějak iptables nastaveny, samozřejmě jen vhodně doplňte jejich stávající konfiguraci!

A to je vše, mělo by stačit restartovat OpenVPN nebo síťový systém.

Zaznamenáno
Stran: [1] Nahoru Tisk 
« předchozí další »
Skočit na:  


Poháněno MySQL Poháněno PHP Powered by SMF 1.1.21 | SMF © 2011, Simple Machines Validní XHTML 1.0! Validní CSS!