hmask=255.255.255.255
nmask0=0.0.0.0
nmask16=255.255.0.0
nmask24=255.255.255.0
nmask28=255.255.255.240
nmask29=255.255.255.248
local_sg=207.236.55.216
local_nexthop=207.236.55.1
local_sg_bcast=207.236.55.255
local_sg_nmask=$nmask24
local_net=192.168.2.0
local_nmask=$nmask24
remote_sg=209.157.90.146
remote_net=209.157.90.160
remote_nmask=$nmask29
ext_sg=209.157.90.198
ext_net=209.157.90.192
ext_bcast=209.157.90.199
ext_nmask=$nmask29
default_net=0.0.0.0
default_bcast=255.255.255.255
default_nmask=$nmask0
ipsecdev=ipsec1
aliasdev=eth0:1
physdev=eth2
iv=0x0123456789abcdef
enckey8=0x0123456789abcdef
enckey24=0x0123456789abcdef0123456789abcdef0123456789abcdef
authkey16=0x0123456789abcdef0123456789abcdef
authkey20=0x0123456789abcdef0123456789abcdef01234567
depmod -a # only if klips is compiled as a module
modprobe ipsec # only if klips is compiled as a module
tncfg --attach --virtual $ipsecdev --physical $physdev
ifconfig $ipsecdev $local_sg broadcast $local_sg_bcast netmask $local_sg_nmask
tncfg --detach --virtual $ipsecdev
ifconfig $ipsecdev down
rmmod ipsec # only if klips is compiled as a module
Warning: Each of the Setup scripts first deletes the route for the destinations it
needs to protect, if it exists. When the route gets deleted with the deletion
of the protected connection, that route will no longer exist. This route must be
put back manually, or reboot the network configuration if it was installed automatically.
Assumptions: Both machines have had networking set up and can pass packets.
# forward path
route del $remote_sg
route add -host $remote_sg dev $ipsecdev gw $local_nexthop
eroute --add --src $local_sg/$hmask \
--dst $remote_sg/$hmask \
--edst $remote_sg --spi 0x225
spi --edst $remote_sg --spi 0x225 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
# Return path
spi --edst $local_sg --spi 0x235 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
# forward path
spi --edst $remote_sg --spi 0x225 --del
eroute --del --src $local_sg/$hmask --dst $remote_sg/$hmask
route del $remote_sg
# Return path
spi --edst $local_sg --spi 0x235 --del
Assumptions: Any subnets have been set up and all machines can see the internet.
# forward path
route del $remote_sg
route add -host $remote_sg dev $ipsecdev gw $local_nexthop
eroute --add --src $local_sg/$hmask \
--dst $remote_sg/$hmask \
--edst $remote_sg --spi 0x223
spi --edst $remote_sg --spi 0x223 --ip4 \
--src $local_sg --dst $remote_sg
spi --edst $remote_sg --spi 0x225 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
spigrp $remote_sg 0x223 \
$remote_sg 0x225
# return path
spi --edst $local_sg --spi 0x235 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
# forward path
eroute --del --src $local_sg/$hmask \
--dst $remote_sg/$hmask
route del $remote_sg
spi --edst $remote_sg --spi 0x223 --del
# return path
spi --edst $local_sg --spi 0x235 --del
# forward path
route del $remote_net
route add -net $remote_net dev $ipsecdev gw $local_nexthop
eroute --add --src $local_net/$local_nmask \
--dst $remote_net/$remote_nmask \
--edst $remote_sg --spi 0x223
spi --edst $remote_sg --spi 0x223 --ip4 \
--src $local_sg --dst $remote_sg
spi --edst $remote_sg --spi 0x225 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
spigrp $remote_sg 0x223 \
$remote_sg 0x225
# return path
spi --edst $local_sg --spi 0x235 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
eroute --del --src $local_net/$local_nmask \
--dst $remote_net/$remote_nmask
route del $remote_net
spi --edst $local_sg --spi 0x235 --del
# return path
spi --edst $remote_sg --spi 0x223 --del
Assumptions: All machines are set up to see each other and the internet.
# forward path
route del $remote_net
route add -net $remote_net netmask $remote_nmask dev $ipsecdev gw $local_nexthop
eroute --add --src $local_sg/$hmask \
--dst $remote_net/$remote_nmask \
--edst $remote_sg --spi 0x223
spi --edst $remote_sg --spi 0x223 --ip4 \
--src $local_sg --dst $remote_sg
spi --edst $remote_sg --spi 0x225 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
spigrp $remote_sg 0x223 \
$remote_sg 0x225
# return path
spi --edst $local_sg --spi 0x235 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
# forward path
route del $remote_net
eroute --del --src $local_sg/$hmask \
--dst $remote_net/$remote_nmask
spi --edst $remote_sg --spi 0x223 --del
# return path
spi --edst $local_sg --spi 0x235 --del
# forward path
route del $remote_sg
route add -host $remote_sg dev $ipsecdev gw $local_nexthop
eroute --add --src $local_net/$local_nmask \
--dst $remote_sg/$hmask \
--edst $remote_sg --spi 0x223
spi --edst $remote_sg --spi 0x223 --ip4 \
--src $local_sg --dst $remote_sg
spi --edst $remote_sg --spi 0x225 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
spigrp $remote_sg 0x223 \
$remote_sg 0x225
# return path
spi --edst $local_sg --spi 0x235 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
# forward path
route del $remote_sg
eroute --del --src $local_net/$local_nmask \
--dst $remote_sg/$hmask
spi --edst $remote_sg --spi 0x223 --del
# return path
spi --edst $local_sg --spi 0x235 --del
Assumptions: The masqueraded subnet has been set up and all machines can see the internet.
# forward path
route del $remote_net
route add -net $remote_net dev $ipsecdev gw $local_nexthop
eroute --add --src $local_net/$local_nmask \
--dst $remote_net/$remote_nmask \
--edst $remote_sg --spi 0x223
ipfwadm -F -i accept -S $local_net/$local_nmask -D $remote_net/$remote_nmask
spi --edst $remote_sg --spi 0x223 --ip4 \
--src $local_sg --dst $remote_sg
spi --edst $remote_sg --spi 0x225 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
spigrp $remote_sg 0x223 \
$remote_sg 0x225
# return path
spi --edst $local_sg --spi 0x235 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
# forward path
eroute --del --src $local_net/$local_nmask \
--dst $remote_net/$remote_nmask
ipfwadm -F -d accept -S $local_net/$local_nmask -D $remote_net/$remote_nmask
route del $remote_net
spi --edst $local_sg --spi 0x235 --del
# return path
spi --edst $remote_sg --spi 0x223 --del
Assumptions: A masqueraded subnet has been set up and all machines can see the internet. Each machine on the extruded subnet will need to route all packets to the remote subnet (in this case the entire internet) via the I/F (direct or aliased) that has been configured with an extruded valid internet address.
# set up superimposed valid internet subnet with interface aliases
ifconfig $aliasdev $ext_sg broadcast $ext_bcast netmask $ext_nmask
route add -net $ext_net netmask $ext_nmask dev $aliasdev
# forward path
route del $default_net
route add -net $default_net dev $ipsecdev gw $local_nexthop
eroute --add --src $ext_net/$ext_nmask \
--dst $default_net/$default_nmask \
--edst $remote_sg --spi 0x223
ipfwadm -F -i accept -S $ext_net/$ext_nmask -D $default_net/$default_nmask
spi --edst $remote_sg --spi 0x223 --ip4 \
--src $local_sg --dst $remote_sg
spi --edst $remote_sg --spi 0x225 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
spigrp $remote_sg 0x223 \
$remote_sg 0x225
# return path
spi --edst $local_sg --spi 0x235 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
# forward path
eroute --del --src $ext_net/$ext_nmask \
--dst $default_net/$default_nmask
ipfwadm -F -d accept -S $ext_net/$ext_nmask -D $default_net/$default_nmask
route del $default_net
spi --edst $local_sg --spi 0x235 --del
# return pathf
spi --edst $remote_sg --spi 0x223 --del
Assumptions: Both machines have had networking set up and can pass packets.
# forward path
route del $remote_sg
route add -host $remote_sg dev $ipsecdev gw $local_nexthop
eroute --add --src $local_sg/$hmask \
--dst $remote_sg/$hmask \
--edst $remote_sg --spi 0x225
spi --edst $remote_sg --spi 0x225 --ah hmac-md5-96 \
--authkey $authkey16
# Return path
spi --edst $local_sg --spi 0x235 --ah hmac-md5-96 \
--authkey $authkey16
# forward path
spi --edst $remote_sg --spi 0x225 --del
eroute --del --src $local_sg/$hmask --dst $remote_sg/$hmask
route del $remote_sg
# Return path
spi --edst $local_sg --spi 0x235 --del
# forward path
route del $remote_sg
route add -host $remote_sg dev $ipsecdev gw $local_nexthop
eroute --add --src $local_sg/$hmask \
--dst $remote_sg/$hmask \
--edst $remote_sg --spi 0x225
spi --edst $remote_sg --spi 0x225 --ah hmac-sha1-96 \
--authkey $authkey20
# Return path
spi --edst $local_sg --spi 0x235 --ah hmac-sha1-96 \
--authkey $authkey20
# forward path
spi --edst $remote_sg --spi 0x225 --del
eroute --del --src $local_sg/$hmask --dst $remote_sg/$hmask
route del $remote_sg
# Return path
spi --edst $local_sg --spi 0x235 --del
# forward path
route del $remote_sg
route add -host $remote_sg dev $ipsecdev gw $local_nexthop
eroute --add --src $local_sg/$hmask \
--dst $remote_sg/$hmask \
--edst $remote_sg --spi 0x225
spi --edst $remote_sg --spi 0x225 --esp null-md5-96 \
--authkey $authkey20
# Return path
spi --edst $local_sg --spi 0x235 --esp null-md5-96 \
--authkey $authkey20
# forward path
spi --edst $remote_sg --spi 0x225 --del
eroute --del --src $local_sg/$hmask --dst $remote_sg/$hmask
route del $remote_sg
# Return path
spi --edst $local_sg --spi 0x235 --del
# forward path
route del $remote_sg
route add -host $remote_sg dev $ipsecdev gw $local_nexthop
eroute --add --src $local_sg/$hmask \
--dst $remote_sg/$hmask \
--edst $remote_sg --spi 0x225
spi --edst $remote_sg --spi 0x225 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
# Return path
spi --edst $local_sg --spi 0x235 --esp 3des-md5-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey16
# forward path
spi --edst $remote_sg --spi 0x225 --del
eroute --del --src $local_sg/$hmask --dst $remote_sg/$hmask
route del $remote_sg
# Return path
spi --edst $local_sg --spi 0x235 --del
# forward path
route del $remote_sg
route add -host $remote_sg dev $ipsecdev gw $local_nexthop
eroute --add --src $local_sg/$hmask \
--dst $remote_sg/$hmask \
--edst $remote_sg --spi 0x225
spi --edst $remote_sg --spi 0x225 --esp 3des \
--iv $iv \
--enckey $enckey24
spi --edst $remote_sg --spi 0x226 --ah hmac-md5 \
--authkey $authkey16
spigrp $local_sg 0x225 \
$local_sg 0x226
# Return path
spi --edst $local_sg --spi 0x235 --esp 3des \
--iv $iv \
--enckey $enckey24
spi --edst $local_sg --spi 0x236 --ah hmac-md5 \
--authkey $authkey16
# forward path
spi --edst $remote_sg --spi 0x225 --del
eroute --del --src $local_sg/$hmask --dst $remote_sg/$hmask
route del $remote_sg
# Return path
spi --edst $local_sg --spi 0x235 --del
# forward path
route del $remote_sg
route add -host $remote_sg dev $ipsecdev gw $local_nexthop
eroute --add --src $local_sg/$hmask \
--dst $remote_sg/$hmask \
--edst $remote_sg --spi 0x225
spi --edst $remote_sg --spi 0x225 --esp des-md5-96 \
--iv $iv \
--enckey $enckey8 \
--authkey $authkey16
# Return path
spi --edst $local_sg --spi 0x235 --esp des-md5-96 \
--iv $iv \
--enckey $enckey8 \
--authkey $authkey16
# forward path
spi --edst $remote_sg --spi 0x225 --del
eroute --del --src $local_sg/$hmask --dst $remote_sg/$hmask
route del $remote_sg
# Return path
spi --edst $local_sg --spi 0x235 --del
# forward path
route del $remote_sg
route add -host $remote_sg dev $ipsecdev gw $local_nexthop
eroute --add --src $local_sg/$hmask \
--dst $remote_sg/$hmask \
--edst $remote_sg --spi 0x225
spi --edst $remote_sg --spi 0x225 --esp 3des-sha1-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey20
# Return path
spi --edst $local_sg --spi 0x235 --esp 3des-sha1-96 \
--iv $iv \
--enckey $enckey24 \
--authkey $authkey20
# forward path
spi --edst $remote_sg --spi 0x225 --del
eroute --del --src $local_sg/$hmask --dst $remote_sg/$hmask
route del $remote_sg
# Return path
spi --edst $local_sg --spi 0x235 --del
cat /proc/net/ipsec_*