VPN over SSH
Software nodig
- pppd, gebruikt in deze opstelling was ppp-2.4.4b1-i486-1
- OpenSSH
- pty-redir (http://www.study-area.org/linux/src/pty-redir-0.1.tgz)
Netwerk info
Subnet A
IP Range: 192.168.1.0/24 Router IP: 192.168.1.1
Subnet B
IP Range: 192.168.3.0/24 Router IP: 192.168.3.1
VPN Link
IP Range: 192.168.2.0/24 Side A: 192.168.2.1 Side B: 192.168.2.2
de pppd link heb ik voor het gemak even in een andere range gezet om verwarring te voorkomen:
Router A: - eth0 = inet ip - eth1 = 192.168.1.1 - ppp0 = 192.168.2.1
Router B: - eth0 = inet ip - eth1 = 192.168.3.1 - ppp0 = 192.168.2.2
Script
Wanneer je pty-redir hebt gecompiled (make) kan je het volgende script gebruiken om de tunnel op te bouwen, dit gebeurt vanaf router A:
#!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin ## Op welk internet IP is router B te bereiken SERVER="192.0.34.166" ## Welk IP krijgt de lokale kant van de tunnel PPPCLIENT="192.168.2.1" ## En welk IP krijgt de server kant PPPSERVER="192.168.2.2" ## Welk netwerk hebben we lokaal LOCALNET="192.168.1.0" ## En met welk netwerk willen we deze koppelen? REMOTENET="192.168.3.0" ## Start pppd op remote host pty-redir /usr/bin/ssh -t -i /root/.ssh/specialkey $SERVER \ /usr/sbin/pppd nomppc nomppe debug noauth lock asyncmap 0 > /tmp/vpn-tunnel ## Wacht even tot de connectie tot stand is gebracht sleep 5 ## Start lokaal een pppd en koppel die aan de pty van de remote pppd /usr/sbin/pppd `cat /tmp/vpn-tunnel` debug noauth lock asyncmap 0 \ $PPPCLIENT:$PPPSERVER ## Wederom even wachten tot de handshake klaar is sleep 15 ## Lokaal de route instellen route add -net $REMOTENET netmask 255.255.255.0 gw $PPPSERVER ## Remote de route instellen /usr/bin/ssh -t -i /root/.ssh/specialkey $SERVER \ route add -net $LOCALNET netmask 255.255.255.0 gw $PPPCLIENT
de specialkey is voor de public-key authorisatie zodat ik geen password hoef in te geven