Fórum Root.cz

Hlavní témata => Sítě => Téma založeno: Milan Fakovaný 26. 04. 2018, 12:19:24

Název: Asi neobvyklá konfigurace VPN
Přispěvatel: Milan Fakovaný 26. 04. 2018, 12:19:24
Zdravím,
lokální síť A. Ta je skryta za neveřejnou IP a není rozumný způsob, jak to změnit.
Pak mám nezávislé přístroje (telefon, tablet apod.), které mají veřejné, ale dynamické adresy.
No a pak mám server s veřejnou statickou IP.

Potřebuji se pomocí zmíněných nezávislých přístrojů dostat do lokální sítě A. Varianta, kterou bych to chtěl vyřešit, je instalace VPN na server s tím, že lokální síť se na tuto VPN připojí automaticky.
Mobilní klienti po připojení na VPN na serveru připojí do lokální sítě A.

Věděl by někdo, jak na to?
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Miroslav Šilhavý 26. 04. 2018, 12:23:20
Za popsané situace je to řešitelné, ale volba technologie se odvíjí asi od 20 dalších otázek. Např. rychlost připojení, stabilita, očekávaná rychlost v rámci VPN, jestli do VPN půjde veškerý provoz, nebo se tam budou směrovat jen některé sítě, jaké OS budou na straně klientů, ... Z toho vyplyne typ tunel, jestli L2 neb L3 a jaká budou omezení.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Pepan 26. 04. 2018, 13:24:57
Co zkusit třeba VPS s veřejnou IP adresou?

Síť A vytáčí VPN (IPSec) na VPS. Klienti se připojují VPN (OpenVPN, IPSec nebo co já vím) k VPS...
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Sten 26. 04. 2018, 13:49:20
Tinc (https://www.tinc-vpn.org). Server s veřejnou statickou adresou bude sloužit jen jako broker, komunikace ale půjde přímo. Vhodným nastavením směrování v client config (nebo použitím bridge módu) dostanou všichni klienti přístup do celé sítě A.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Milan Fakovaný 26. 04. 2018, 23:31:44
Za popsané situace je to řešitelné, ale volba technologie se odvíjí asi od 20 dalších otázek. Např. rychlost připojení, stabilita, očekávaná rychlost v rámci VPN, jestli do VPN půjde veškerý provoz, nebo se tam budou směrovat jen některé sítě, jaké OS budou na straně klientů, ... Z toho vyplyne typ tunel, jestli L2 neb L3 a jaká budou omezení.
Klienti budou vesměs na iOS nebo Androidu, bylo by skvělé, kdyby to fungovalo bez dodatečné instalace, pouze nakonfigurováním.
Rychlost není podstatná, přenos dat nebude velký ani co do objemu, ani co do náročnosti na propustnost. Síť A by měla zůstat víceméně stejná. U mobilních klientů je to jedno, podstatné je, že po připojení k VPN uvidí na síť A a budou schopny komunikovat i s počítači v této síti.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Milan Fakovaný 26. 04. 2018, 23:34:14
Co zkusit třeba VPS s veřejnou IP adresou?

Síť A vytáčí VPN (IPSec) na VPS. Klienti se připojují VPN (OpenVPN, IPSec nebo co já vím) k VPS...
Vzhledem k tomu, že mám k dispozici server s veřejnou statickou adresou, tak se bez VPS obejdu. V zásadě řeším to, jaký software zvolit a jak to nakonfigurovat.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Milan Fakovaný 26. 04. 2018, 23:34:59
Tinc (https://www.tinc-vpn.org). Server s veřejnou statickou adresou bude sloužit jen jako broker, komunikace ale půjde přímo. Vhodným nastavením směrování v client config (nebo použitím bridge módu) dostanou všichni klienti přístup do celé sítě A.
To vypadá zajímavě, díky. Prověřím a kdyžtak se optám.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Pepan 27. 04. 2018, 09:08:40
Co zkusit třeba VPS s veřejnou IP adresou?

Síť A vytáčí VPN (IPSec) na VPS. Klienti se připojují VPN (OpenVPN, IPSec nebo co já vím) k VPS...
Vzhledem k tomu, že mám k dispozici server s veřejnou statickou adresou, tak se bez VPS obejdu. V zásadě řeším to, jaký software zvolit a jak to nakonfigurovat.

Smarja, v tom VPS pointa nebyla. A ten zbytek byla odpověď na to, co řešíte. Nebo ne?

Tinc vypadá zajímavě, ale nějak mi uniká, jakou by pro Vás měl výhodu... Potřebujete mesh? Navíc jste psal, že preferujete řešení bez instalace dalšího software na klientech.
Windows, Android i IOS nativně podporují L2TP/IPSec.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Milan Fakovaný 27. 04. 2018, 09:20:19
Omlouvám se, v tom případě jsem pointu nepochopil. To, že na serveru s veřejnou IP bude běžet VPN, ke které se síť A připojí, jsem psal už v úvodním popisu situace, takže mi nějak uniklo, v čem se mnou naznačené řešení liší od navrhovaného.
Vzhledem k tomu, že do sítí vyloženě nedělám, by pro mě měl Tinc výhodu relativně jednoduché konfigurace. Zkoušel jsem rozběhat L2TP/IPSec (S/WAN), ale bohužel bez úspěchu. Když se připojuju z iPhone, tak mi server vždy vyhodí chybu "no matching CHILD_SA config found" a dál jsem se nedostal.

Proto se ptám zde na rady, třeba to jde řešit jednodušeji. Ukazuje se, že ten Tinc cesta nebude.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Host 27. 04. 2018, 10:19:32
OpenVPN má klienty pro iPhone i Droida, po nastavení správného routování by to mělo fungovat jak je požadováno.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Martin 27. 04. 2018, 13:43:05
Taky používám OpenVPN na podobný účel. Doma veřejná IP. Port 1194 přesměrovaný na NAS, na kterém je server OpenVPN a připojuji se klienty z PC i mobuli bez problému.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Pepan 27. 04. 2018, 16:01:45
Omlouvám se, v tom případě jsem pointu nepochopil. To, že na serveru s veřejnou IP bude běžet VPN, ke které se síť A připojí, jsem psal už v úvodním popisu situace, takže mi nějak uniklo, v čem se mnou naznačené řešení liší od navrhovaného.
Vzhledem k tomu, že do sítí vyloženě nedělám, by pro mě měl Tinc výhodu relativně jednoduché konfigurace. Zkoušel jsem rozběhat L2TP/IPSec (S/WAN), ale bohužel bez úspěchu. Když se připojuju z iPhone, tak mi server vždy vyhodí chybu "no matching CHILD_SA config found" a dál jsem se nedostal.

Proto se ptám zde na rady, třeba to jde řešit jednodušeji. Ukazuje se, že ten Tinc cesta nebude.

Tak já nevím...
Na triviální otázku triviální odpověď.
Myslel jsem, že Vám jde o nástin řešení a ne o zaslání kompletní konfigurace...

Nemyslím, že je konfigurace Tinc nějak zásadně jednodušší než třeba OpenSwan. Zběžně jsem si prošel dokumentaci Tinc a nezdála se mi moc dobrá (mohu se plést). Ale k IPSecu jistě najdete více příkladů, návodů, řešení problémů.

IPSec je standardní způsob jak propojit dvě sítě. OpenVPN používám jen tam, kde se mi IPSec neosvědčil (Mikrotik + LTE + špatný signál). Na připojení klientů můžete použít, co chcete. OpenVPN je fajn, jen je celkem "opruz" dostat na mobilní zařízení konfigurační soubory s certifikáty. VPN aplikace znám lepší, ale použitelné to je. Psal jste ALE, že preferujete řešení, které nevyžaduje dodatečný software na klientech. Proto jsem Vám navrhl L2TP/IPSec, který je nativně podporován skoro na všech OS.

Nebo Vám něco vadí na návrhu řešení, které je běžně používané, využívá standardní protokoly a najdete k němu milion návodů na internetu?
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Milan Fakovaný 27. 04. 2018, 17:55:05
Nechci působit arogantně, nečekal jsem, že na základě mírně specifického dotazu někdo vygeneruje konfiguraci, to samozřejmě ne.

Celou akci bych rozdělil na několik částí:
- vybrat vhodné řešení, které bude zvládat všechny požadavky (což dejme tomu IPSec je)
- nakonfigurovat VPN na serveru s veřejnou IP tak, aby se k němu dalo připojit mobilními klienty (iPhony, Androidi)
- nakonfigurovat router na lokální síti tak, aby se byl schopen připojit na VPN zmíněnou výše
- nakonfigurovat cosi (routování?), aby mobilní klienti viděli na lokální síť A a naopak

No a já jsem skončil hned u druhého bodu. Zadání: nakonfigurovat L2TP/IPSec v režimu PSK tak, aby se k ní šlo připojit připojit iPhonem. Jak jsem psal, ať použiju jakýkoliv návod, tak to nefunguje. S poslední kuchařkou, kterou jsem zkoušel, mi to vyhazovalo tu chybu "no matching CHILD_SA config found". Dostupné zdroje radí, že nejspíš bude problém v left a right identifikaci, ale tu mám přesně návodu, takže asi ne.

Nechci po nikom, aby mi tu ve volném čase dělal zadarmo support, ale pokud byste hodil jeden či dva odkazy z těch "milionů návodů", byl bych Vám vděčný.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: vpn 28. 04. 2018, 13:57:24
Zrovna jsem to nastavoval : docker hub martin/openvpn
Jel Linux i Win10(nezkousel jsem ted mobily, ale kdysi mi iOS do USA jel).
Kazdemu klientovi vygenerujete jeden ovpn soubor(certifikaty jsou v nem).
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: naseptavac 29. 04. 2018, 15:19:14
Tady je fungujici konfigurace PSK L2TP/IPSEC (libreswan/centos7).
Stroj ma 2 sitova rozhrani - 192.168.172.5 je vnejsi a za druhym (192.168.15.5) je sit, kam se pristupuje (192.168.15.0/24) a odkud se taky berou adresy pro l2tp klienty i server.
Na firewallu jsou treba jen 2 UDP "vpichy" - porty 500 a 4500 zevne na 192.168.172.5
Pod windows za natem je treba nahrat nekam do registru nejakou hodnotu a restartovat.

========================================
https://libreswan.org/wiki/VPN_server_for_remote_clients_using_IKEv1_with_L2TP
========================================
yum install epel-release libreswan lsof ppp
yum install --enablerepo=epel xl2tpd
========================================
cp -p /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.original
cp -p /etc/ppp/options.xl2tpd /etc/ppp/options.xl2tpd.original
cp -p /etc/ipsec.conf /etc/ipsec.conf.original
vi /etc/xl2tpd/xl2tpd.conf
vi /etc/ppp/options.xl2tpd
vi /etc/ipsec.conf
vi /etc/ppp/chap-secrets
vi /etc/ipsec.d/l2tp-ipsec.conf
vi /etc/ipsec.d/l2tp-ipsec.secrets
vi /etc/sysctl.d/98-ipsec.conf
chmod 600 /etc/ipsec.d/l2tp-ipsec.conf
chmod 600 /etc/ipsec.d/l2tp-ipsec.secrets
chmod 600 /etc/ppp/chap-secrets
========================================
systemctl enable ipsec
###### kvuli povoleni xl2tpd jsem kdysi musel na chvili vypnout selinux ######
###### mozna by stacil relabel nebo restart, pokud uz to nefunguje samo ######
systemctl enable xl2tpd
========================================
systemctl start ipsec
systemctl start xl2tpd
========================================
ipsec verify
========================================
 cat /etc/sysctl.d/98-ipsec.conf
===
net.ipv4.ip_forward=1
#
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0
#
net.ipv4.conf.default.arp_filter=1
net.ipv4.conf.all.arp_filter=1
#
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.send_redirects=0
#
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
========================================
 cat /etc/xl2tpd/xl2tpd.conf
===
[global]
listen-addr = 192.168.172.5
ipsec saref = yes
force userspace = yes
debug tunnel = no

[lns default]
ip range = 192.168.15.16-192.168.15.32
local ip = 192.168.15.10
require chap = yes
refuse pap = yes
require authentication = yes
name = MYVPNSERVER
ppp debug = no
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
========================================
 cat /etc/ppp/options.xl2tpd
===
ipcp-accept-local
ipcp-accept-remote
noccp
auth
crtscts
# when having MTU issues, can be decreased to about 1200
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
========================================
cat /etc/ppp/chap-secrets
===
# Secrets for authentication using CHAP
# client    server     secret          IP addresses
user1       *          "password1"     10.10.64.2
user2       *          "password2"     10.10.64.3
user10      *          "secret10"      *
user47      *          "paparde11"     *
========================================
 cat /etc/ipsec.d/l2tp-ipsec.conf
===
conn l2tp-ipsec
        type=transport
        authby=secret
        ikev2=never
        auto=add

# Apple's and Microsoft's L2TP/IPsec clients do not enable PFS
        pfs=no

        rekey=no
        phase2=esp
        encapsulation=yes
        nat-keepalive=yes
        salifetime=3h
        ikelifetime=2h

        left=%defaultroute
        leftprotoport=17/1701

        right=%any
        rightprotoport=17/%any

# Apple iOS doesn't send delete notify so we need dead peer detection
# to detect vanishing clients
        dpddelay=10
        dpdtimeout=90
        dpdaction=clear
========================================
 cat /etc/ipsec.d/l2tp-ipsec.secrets
===
: PSK "strongrandomstring"
========================================
 diff /etc/ipsec.conf /etc/ipsec.conf.original
===
12,13d11
<       listen=192.168.172.5
<       uniqueids=no
46c44
<       virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:100.64.0.0/10,%v6:fd00::/8,%v6:fe80::/10,%v4:!192.168.15.0/24
---
>       virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:100.64.0.0/10,%v6:fd00::/8,%v6:fe80::/10
========================================
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Milan Fakovaný 30. 04. 2018, 14:21:54
Vřelé díky, určitě vyzkouším a případně se ozvu, kdyby něco nešlo. Windows se k tomu naštěstí připojovat nebudou ;)
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: Milan Fakovaný 01. 05. 2018, 16:55:24
Tak jsem vyzkoušel tu konfiguraci z libreswan/centos7. Nahradil jsem IP adresy těmi správnými, použil samozřejmě svoje hesla apod., ale připojení z iPhonu se nepovede:
May  1 16:49:39 gentoo charon[4207]: 06[ENC] parsed QUICK_MODE request 3756039543 [ HASH ]
May  1 16:49:39 gentoo charon[4207]: 06[CHD] CHILD_SA l2tp-ipsec{5} state change: CREATED => INSTALLING
May  1 16:49:39 gentoo charon[4207]: 06[CHD]   using AES_CBC for encryption
May  1 16:49:39 gentoo charon[4207]: 06[CHD]   using HMAC_SHA1_96 for integrity
May  1 16:49:39 gentoo charon[4207]: 06[CHD] adding inbound ESP SA
May  1 16:49:39 gentoo charon[4207]: 06[CHD]   SPI 0xcd378b26, src IPHONE_IP dst VEREJNA_IP
May  1 16:49:39 gentoo charon[4207]: 06[CHD] adding outbound ESP SA
May  1 16:49:39 gentoo charon[4207]: 06[CHD]   SPI 0x0df79ea0, src VEREJNA_IP dst IPHONE_IP
May  1 16:49:39 gentoo charon[4207]: 06[IKE] CHILD_SA l2tp-ipsec{5} established with SPIs cd378b26_i 0df79ea0_o and TS VEREJNA_IP/32[udp/l2tp] === IPHONE_IP/32[udp/50644]
May  1 16:49:39 gentoo charon[4207]: 06[IKE] CHILD_SA l2tp-ipsec{5} established with SPIs cd378b26_i 0df79ea0_o and TS VEREJNA_IP/32[udp/l2tp] === IPHONE_IP/32[udp/50644]
May  1 16:49:39 gentoo charon[4207]: 06[CHD] CHILD_SA l2tp-ipsec{5} state change: INSTALLING => INSTALLED
May  1 16:49:59 gentoo charon[4207]: 03[NET] received packet: from IPHONE_IP[4500] to VEREJNA_IP[4500]
May  1 16:49:59 gentoo charon[4207]: 03[NET] waiting for data on sockets
May  1 16:49:59 gentoo charon[4207]: 03[NET] received packet: from IPHONE_IP[4500] to VEREJNA_IP[4500]
May  1 16:49:59 gentoo charon[4207]: 03[NET] waiting for data on sockets
May  1 16:49:59 gentoo charon[4207]: 12[NET] received packet: from IPHONE_IP[4500] to VEREJNA_IP[4500] (92 bytes)
May  1 16:49:59 gentoo charon[4207]: 12[ENC] parsed INFORMATIONAL_V1 request 1330450503 [ HASH D ]
May  1 16:49:59 gentoo charon[4207]: 12[IKE] received DELETE for ESP CHILD_SA with SPI 0df79ea0
May  1 16:49:59 gentoo charon[4207]: 12[CHD] CHILD_SA l2tp-ipsec{5} state change: INSTALLED => DELETING
May  1 16:49:59 gentoo charon[4207]: 12[IKE] closing CHILD_SA l2tp-ipsec{5} with SPIs cd378b26_i (574 bytes) 0df79ea0_o (0 bytes) and TS VEREJNA_IP/32[udp/l2tp] === IPHONE_IP/32[udp/50644]
May  1 16:49:59 gentoo charon[4207]: 12[IKE] closing CHILD_SA l2tp-ipsec{5} with SPIs cd378b26_i (574 bytes) 0df79ea0_o (0 bytes) and TS VEREJNA_IP/32[udp/l2tp] === IPHONE_IP/32[udp/50644]
May  1 16:49:59 gentoo charon[4207]: 12[CHD] CHILD_SA l2tp-ipsec{5} state change: DELETING => DESTROYING

Za tou tučně označenou řádkou se 20s nic neděje a pak se spojení ukončí s tím, že iPhone si postěžujem že se spojení nepovedlo. Máte prosím představu, co je špatně? Díky.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: naseptavac 01. 05. 2018, 17:34:02
Bohuzel nemuzu slouzit, podle vseho je to strongswan na gentoo. To je jiny software na jinem operacnim systemu.
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: naseptavac 01. 05. 2018, 21:27:26
Plus jeste tady ohledne nastaveni firewallu:
https://forum.root.cz/index.php?topic=18258.msg263239#msg263239
Název: Re:Asi neobvyklá konfigurace VPN
Přispěvatel: František Ryšánek 01. 05. 2018, 22:46:17
> 12[IKE] received DELETE for ESP CHILD_SA with SPI 0df79ea0

Takže můžete zkusit zvednout na serveru debug level pro tuto oblast (neporadím jak) a stejně třeba nakonec nezjistíte, proč IPhone proti [vašemu IPsec serveru] tu security association típne vzápětí po navázání. Netvrdím že je to tenhle případ, ale moje dosavadní zkušenosti s IPsecem jsou přesně takové: různé implementace proti sobě navzájem se povedou málokdy. Jsou tu lidi, kteří IPsecem dýchají, a pro ně to třeba není takový problém. Taky tu zatím nikdo nezmínil, že IKE v2 je v tomhle lepší než "v1" apod.

Osobně mám lepší (použitelné) zkušenosti s OpenVPN. Je to jediný projekt (code base) a je sám se sebou slušně kompatibilní napříč mnoha releasy.

Pro tenhle scénář (cestující klienti na centrálu) doporučuji transport TCP (nikoli UDP), a pokud by nefungoval standardní port 1194, dá se to narafičit i na port 443 (který má o něco lepší šanci skrz firewally).

Autentikace klientů se dá navléknout pomocí PKI certifikátů, nebo pomocí loginu+hesla, nebo kombinací obojího. Z hlediska správy konfigurací klientů je nejjednodušší varianta, kdy jednotlivý klient potřebuje jenom svůj (jednotný) konfigurák, certifikát CA (pokud na server použijete self-signed certifikát) a samozřejmě login+heslo. Tzn. klient teoreticky nepotřebuje svůj vlastní certifikát. Je to méně bezpečné, ale jde to.

S OpenVPN (nebo s libtls?) se distribuuje pár skriptů zvaných "easy RSA", pomocí kterých lze generovat potřebné certifikáty. Na serveru je potřeba cerfikát a tuším soubor s "Diffie-Hellman" klíčem (nebo co to je).

Pro mě osobně asi nejnáročnější bylo zorientovat se v klíčích a certifikátech = naučit se základní chvaty s easy-RSA. Nějaké vzorové konfiguráky OpenVPN serveru a klienta mohu kdyžtak nabídnout.

Pokud by se mělo jednat o rozsáhlejší síť (větší počet mobilních zařízení) tak zvažte privátní APN. Odpadly by starosti s konfigurací a některými nectnostmi OpenVPN.