openswan-2.6.39移植到powerpc了:
$ make programs
$ make install DESTDIR=/opt/nfsroot_p1010gap/
$ make KERNELSRC=~/work.mpc/linux-3.8.18 modules
为简单起见,使用内核的NETKEY IPsec stack,没有用openswan的KLIPS stack。但freescale文档说后者性能高一些,大包能到600Mbps。
放狗搜索后,采用Road Warrior方式配置。但第一步生成公私钥对时,死在ipsec程序里面了:
# ipsec newhostkey --output /etc/ipsec.secrets
经跟踪调试,发现设备文件/dev/random不是硬件随机数生成器,而软件模拟的随机数生成器使用的环境噪声源是keyboard input。就是在这时,我才明白我当时移植P1010时,为啥要把其SEC部分去掉 ---- 我们买的P1010NSN5HHA就不含SEC,以后要最后买P1010NXE5HHA。
我们的平台当然没有keyboard了,所以临时折中采用随机性差的/dev/urandom了。
# rm /dev/random
$ ln -sf /dev/urandom /dev/random
最后VPN能ping通了,在VPN网关能看见ESP:
# tcpdump -i eth1 ;ESP means encrypted (Encapsulating Security Payload)
12:01:11.931877 IP 192.168.1.200 > 192.168.1.10: ESP(spi=0x80a125cc,seq=0x16fe8), length 132
12:01:11.931955 IP 192.168.1.200 > 192.168.108.10: ICMP echo request, id 3948, seq 0, length 64
12:01:11.932415 IP 192.168.1.10 > 192.168.1.200: ESP(spi=0x6957d80a,seq=0xb818), length 132
调用的是内核的软件CRYPTO_ALG。
最后得到性能了,网内跑netserver, 网外跑netperf,才55.06Mbps。