| OpenSWAN |
| ========= |
| In order to explore the CESA through the OpenSWAN, 1 patch should be applied to the OpenSWAN. |
| |
| download openswan-2.6.29 (http://www.openswan.org/), then untar+unzip it. |
| apply the patch: |
| |
| - mv_openswan_2_6_29.patch - |
| change default configs to remove DEBUG and to include OCF. |
| Fixes: |
| - fix icmp_send failure caused by IFF_XMIT_DST_RELEASE flag set on the net dev. |
| - fix rmmod BUG by removing duplicated free_netdev call. |
| - include patch from openswan git that make sure we have the skb->dst in place before we call |
| ip_select_ident otherwise we get kernel warn: "rt_bind_peer(0) .. " |
| |
| and compile: |
| |
| + ipsec module (cross compilation) : |
| 'make KERNELSRC=<path to this release, after config> module ARCH=arm CC=<path_to_cross_compile> LD=<path_to_cross_loader>' |
| then copy the module to the host FS: /lib/modules/<kernel_name>/kernel/net/ipsec/ |
| |
| + ipsec user (native) : |
| make sure that you have the kernel source on the FS. |
| 'make KERNELSRC=<path to this release, after config> programs' |
| 'make install' |
| |
| Note: before tunnel is enabled on target, reverse path filtering(rp_filter) must be disabled under sysfs, using |
| the following commands: |
| - echo 0 > /proc/sys/net/ipv4/conf/eth<x>/rp_filter |
| - echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter |
| |
| Reverse Path Filtering(rp_filter): it is a technology that is used on IP routers to try and prevent source address spoofing, |
| which is often used for DenialOfService attacks. RPF works by checking the source IP of each packet received on an interface |
| against the routing table. If the best route for the source IP address does not use the same interface that the packet was received |
| on the packet is dropped. |
| |
| IPSec routing using encryption/authentication only |
| |
| basic vpn connection: |
| +++++++++++++++++++++ |
| - platform: conncted with egiga. |
| - make sure you have 'ip' (part of the iproute package) installed. |
| - edit /etc/ipsec.conf (on both sides) ,check the "man ipsec.conf" : |
| |
| config setup |
| interfaces="ipsec0=eth0" # Virtual/physical interfaces |
| klipsdebug="none" # Debug KLIPS |
| plutodebug="none" # Debug PLUTO |
| |
| conn dove_psk_vpn |
| type=tunnel # type of the connection: tunnel(default),passthrough,transport,reject,drop |
| authby=secret |
| left=192.168.1.1 |
| leftsubnet=192.168.1.0/16 |
| right=192.168.0.1 # Remote information |
| rightsubnet=192.168.0.0/16 |
| auto=start # start this connection at startup |
| |
| |
| - edit /etc/ipsec.secrets (on both sides) to have shared secret. |
| 192.168.1.1 192.168.0.1 : PSK "123456" |
| |
| - side1: 'ifconfig eth0 192.168.0.1 netmask 255.255.0.0' |
| - side2: 'ifconfig eth0 192.168.1.1 netmask 255.255.0.0' |
| - check connectivity: ping from side1 to 192.168.1.1 |
| - '/etc/init.d/ipsec start' (on both sides), create new interface ipsec0. |
| - check connectivity: ping from side1 to 192.168.1.1 --> VPN is working (make sure by sniffing) |
| |