CIPE navazuje mezi koncovými body IP-PPP tunel, který pro zapouzdření používá UDP. Na rozdíl od jiných implementací tedy nepotřebuje ke svému fungování žádný další protokol třetí vrstvy a vystačí si s jedním UDP socketem, takže je možné jej poměrně snadno používat i v prostředí firewallů, NAT překladů apod.
O šifrování přenášených datagramů se stará rychlá symetrická šifra blowfish s délkou klíče 128 bitů. Volitelně je možné používat IDEA. Novější verze CIPE mohou používat také autentizaci založenou na asymetrických klíčích RSA.
Způsob použití CIPE nejlépe dokumentuje následující příklad. Řekněme, že máme dvě sítě 192.168.0.0/24 a 192.168.1.0/24, které jsou připojeny do Internetu skrze routery s veřejnými IP adresami 240.0.0.1 a 240.0.1.1 tak, jak je to vidět na následujícím schematu. Potřebujeme mezi těmito sítěmi vytvořit propojení tak, aby počítače na síti A mohly bezpečně komunikovat s počítači v síti B.
Nejdříve je nutné sestavit tajný klíč, který bude použit k autentizaci. Klíč má podobu 128 bitového čísla v hexadecimálním tvaru, které uložíme do souboru /etc/cipe/options-cipcb0 na oba dva routery. Soubor s klíčem musí mít nastavená práva přístupu pouze pro roota:
# echo "key 12345678901234567890abcdefabcdef" &qt; /etc/cipe/options-cipcb0 # chmod 0600 /etc/cipe/options-cipcb0
Nyní je potřeba vytvořit virtuální interface sloužící k vlastní realizaci spojení. V Red Hat Linuxu je k tomuto účelu připraven skript ifup-cipcb, proto postačí na routeru A vytvořit definiční soubor /etc/sysconfig/network-scripts/ifcfg-cipcb0 s následujícím obsahem:
DEVICE=cipcb0 ONBOOT=yes USERCTL=yes MYPORT=5000 PEER=240.0.1.1:5000 PTPADDR=192.168.1.253 IPADDR=192.168.0.253
Na routeru B pak ve stejném souboru:
DEVICE=cipcb0 ONBOOT=yes USERCTL=yes MYPORT=5000 PEER=240.0.0.1:5000 PTPADDR=192.168.0.253 IPADDR=192.168.1.253
Význam jednotlivých parametrů je následující:
- MYPORT – číslo UDP portu, na kterém CIPE očekává spojení. Může být vcelku libovolný, pouze se ujistěte, zdali případný firewall nefiltruje spojení na tento port.
- PEER – veřejná IP adresa a číslo CIPE portu protilehlého routeru. Na tuto adresu bude navazováno CIPE spojení skrze existující fyzické rozhraní. Touto adresou tedy musejí být routery přístupné ještě před konfigurováním CIPE tunelu.
- IPADDR – adresa lokálního konce IP tunelu
- PTPADDR – adresa vzdáleného konce IP tunelu
Po správném nastavení parametrů již můžeme vytvořit rozhraní pomocí příkazu „ifup cipcb0“. O vytvoření zařízení se můžeme přesvědčit příkazem ifconfig:
[root@routerA]# ifconfig cipcb0 cipcb0 Link encap:IPIP Tunnel HWaddr inet addr:192.168.0.253 P-t-P:192.158.1.253 Mask:255.255.255.255 UP POINTOPOINT NOTRAILERS RUNNING NOARP MTU:1442 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Rozhraní je samozřejmě nutné vytvořit i na routeru B. Fungování IP tunelu nejlépe ověříme pomocí pingu na adresu vzdáleného konce CIPE tunelu. Pokud máte rozhraní na obou stranách vytvořené a ping přesto nefunguje, hledejte problém nejspíše na firewallu, vypnutém IP-forwardingu, špatných právech k souboru s klíčem atd.
Jestliže vám funguje ping na CIPE adresu druhého routeru, můžete přistoupit k nastavení routování sítě do sítě B:
[root@routerA]# route add -net 192.168.1.0/24 dev cipcb0
podobně na routeru B:
[root@routerB]# route add -net 192.168.0.0/24 dev cipcb0
Routování je možné nastavovat v některém ze startovacích skriptů, nebo přímo v /etc/cipe/ip-up, který se volá při vytváření rozhraní. Kompletní routovací tabulka pak může na routeru A vypadat nějak takto:
[root@routerA]# netstat -rn 192.168.1.0 * 255.255.255.0 U 40 0 0 cipcb0 240.0.1.0 * 255.255.255.252 U 40 0 0 ppp0 192.168.1.253 * 255.255.255.255 UH 40 0 0 cipcb0 192.168.0.0 * 255.255.255.0 U 40 0 0 eth0 127.0.0.0 * 255.0.0.0 U 40 0 0 lo default 240.0.1.2 0.0.0.0 UG 40 0 0 ppp0
Po nastavení routování bychom již měli být schopni transparentně navazovat spojení ze sítě A do sítě B.
Jak vidíte, použití CIPE je snadné. Ovšem pokud máte na VPN technologii o malinko větší nároky, např. komunikaci většího počtu uzlů v multipoint režimu, případně interoperabilitu mezi jinými koncovými body, než jsou Linux a Windows (viz odkazy), nezbude vám, než se poohlédnout někde jinde. Proto se příšte budeme zabývat některou z implentací VPN technologie IPsec.
Zajímavé odkazy