Crmgo Blog

Openswan, nastavení „server - klient“

Openswan, nastavení „server - klient“

Uvnitř kontejneru jako ipsec démona použijeme openswan a jako l2tp server standardní xl2tpd z repozitářů: Dále nastavíme forwardování a zbytek síťové podsystemu pro správnou funkci s NAT a VPN: Přistoupíme k nastavení ipsec démona. Uveďme konfiguraci…

Openswan, nastavení „server - klient“

Uvnitř kontejneru jako daemon ipsec použijeme openswan a jako server l2tp standardní xl2tpd z repozitářů:

apt-get install openswan xl2tpd

Dále nastavíme forwardování a zbytek síťové podsystemu pro správnou funkci s NAT a VPN:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source <main IP of server>
iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
for each in /proc/sys/net/ipv4/conf/*; do echo 0 > $each/accept_redirects; echo 0 > $each/send_redirects; done

Pojďme nastavit daemon ipsec.

Upravíme konfiguraci /etc/ipsec.conf do následující podoby:

config setup
  protostack=netkey
  nat_traversal=yes                          # Enables NAT traversal
  virtual_private=%v4:192.168.1.0/8          # with this option you can add your local IP in NAT
conn L2TP-PSK-NAT
  rightsubnet=vhost:%priv
  also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
  authby=secret                              # Auth with PSK ( preshared key )
  pfs=no
  auto=add                                   
  keyingtries=3
  rekey=no
  ikelifetime=8h
  salifetime=10m
  type=tunnel                                # type of l2tp connection ( tunnel / transport )
  left=11.11.11.11                         # left - is internet IP of l2tp server
  leftprotoport=17/1701
  right=%any                                 # right - is IP of client ( if client NATed , that IP of client is IP in NAT )
  rightprotoport=17/1701

Nejdůležitější části konfigurace jsou okomentovány. Také je třeba nezapomenout, že konfiguraci je třeba sestavit přesně tak, jak je uvedeno výše, tedy s zachováním mezer na začátku řádků u těch příkazů, které je mají, protože odsazení příkazu je daemonem vázáno na blok definovaný bez odsazeného „conn“.

Nyní nastavíme autorizaci pro práci s ipsec. Existují dva metody autorizace – podle certifikátu a podle klíče (PSK). V tomto příkladu nastavíme autorizaci podle klíče v souboru /etc/ipsec.secrets:

11.11.11.11 %any: PSK "mykey"

11.11.11.11 je externí IP adresa našeho serveru
%any je vestavěná proměnná označující jakoukoli IP adresu
PSK je metoda autorizace (může být RSA)
„mykey“ je tajný klíč pro autorizaci, který bude třeba předat klientovi.

Nyní je čas nastavit server l2tp. Bude fungovat přes protokol ppp.

Upravíme konfiguraci /etc/xl2tpd/xl2tpd.conf do následující podoby:

[global]
port = 1701
auth file = /etc/xl2tpd/l2tp-secrets        # auth file with pars login/password for l2tp auth
[lns default]
ip range = 10.0.0.2-10.0.0.200              # range of IP's , that give to clients when auth is good
local ip = 10.0.0.1                        
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = no                                        # debug mode
pppoptfile = /etc/ppp/options.xl2tpd        #  this is ppp options config file
length bit = yes
exclusive = no
assign ip = yes
name = VPN-Server

V této konfiguraci jsou opět okomentovány všechny kritické části, zatímco ostatní jsou intuitivně srozumitelné. Při nastavování serveru je třeba komentáře z konfigurace odstranit.

Nastavíme soubor autorizace l2tp – /etc/xl2tpd/l2tp-secrets. V souboru povolíme připojení všem, protože náš l2tp funguje přes ppp, takže použijeme právě autorizaci ppp.

# Secrets for authenticating l2tp tunnels
# us    them    secret
# *             marko blah2
# zeus          marko   blah
# *     *       interop
*       *       *   # let all , because we use auth with ppp

Dále nastavíme konfiguraci ppp, kterou vyžaduje náš daemon l2tp (/etc/ppp/options.xl2tpd):

refuse-mschap-v2
refuse-mschap
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
idle 1800
mtu 1200
mru 1200
lock
hide-password
local
#debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

V případě problémů se spojením nebo připojením pro ladění funkce l2tp stačí odkomentovat „#debug“ a podívat se do systémového logu /var/log/syslog, zda se nevyskytují chyby.

Nastavíme autorizaci v ppp (/etc/ppp/chap-secrets):

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
test2   l2tpd   test    *

Uživatelské jméno – test2
Server, pro který je tento pár platný pro autorizaci – l2tpd
Heslo – test
S tímto heslem se mohou připojovat klienti ze všech IP adres – *

Restartujeme oba služby:

/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart

Nyní zkontrolujeme správnost fungování modulů samotného ipsec uvnitř kontejneru:

ipsec verify

Výstup funkčního ipsec bude vypadat nějak takto:

root@XXX:~# ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                 [OK]
Linux Openswan U2.6.37-g955aaafb-dirty/K2.6.32-042stab084.10 (netkey)
Checking for IPsec support in kernel                            [OK]
 SAref kernel support                                           [N/A]
 NETKEY:  Testing XFRM related proc values                      [OK]
        [OK]
        [OK]
Checking that pluto is running                                  [OK]
 Pluto listening for IKE on udp 500                             [OK]
 Pluto listening for NAT-T on udp 4500                          [OK]
Checking for 'ip' command                                       [OK]
Checking /bin/sh is not /bin/dash                               [WARNING]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support    

Nyní nastavíme klienta ve Windows 7 pro připojení k našemu VPN l2tp s šifrováním pomocí ipsec.

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.