VPN over SSH

From Frotmail Projects
Jump to navigation Jump to search

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