基于openwrt racoon的ipsec设置以及调试
1、setkey配置
在建立racoon配置以前,必须手动对setkey配置。ipsec有两种数据封装模式:
a.传输模式(Transport mode).
b.隧道模式(Tunnel mode)
传输模式:主要是在原始IP头部和IP负载之间插入一个ESP头部,当然也会在最后加上ESP尾部 和ESP验证数据部分。我们把实际通信的设备叫做通信点,把加密数据的设备叫做加密点,一般加密点等于传输点的条件使用传输模式。
隧道模式:隧道模式把原始IP数据包整个封装到了一个新的IP数据包中,并且在新的IP头部和原始IP头部中间插入了ESP头部,以此对整个原始IP数据包进行了加密处理。只要加密点不等于通信点我们就应该采用隧道模式。
setkey具体配置:
传输模式:spdadd wanip[port1] remoteip[port2] protocol -P out ipsec esp/transport//require;
spdadd remoteip[port2] wanip[port1] protocol -P in ipsec esp/transport//require;
隧道模式:spdadd local_subnet[port1] remote_subnet[port2] protocol -P out ipsec esp/tunnel/wanip-remoteip/unique; spdadd remote_subnet[port2] local_subnet[port1] protocol -P in ipsec esp/tunnel/remoteip-wanip/unique; 注:port可以为具体指定的port,也可以为any。remoteip可以为0.0.0.0,protocol值为(tcp、udp、icmp或者any)。两端ipsec链接设备应该是相对应的设置。
清空setkey配置的方法:flush;spdflush;
查看SAD与SPD信息的方法:setkey -DP
2、firewall设置
iptables -I vpn_input -p esp -j ACCEPT
iptables -I vpn_input -p udp --dport 500 -j ACCEPT
ipt bles -I vpn_input -p udp --dport 4500 -j ACCEPT
iptables -A vpn_forwarding -s remote_subnet -d local_subnet -j ACCEPT
iptables -t nat -A vpn_postrouting -s local_subnet -d remote_subnet -j ACCEPT
3、racoon配置
在openwrt框架下,后台设置需要三个组成部分:配置文件(/etc/config/racoon)、启动脚本(/etc/init.d/racoon)、实际启动的进程以及配置文件(/usr/sbin/racoon -f /var/racoon/racoon.conf)
配置文件(/etc/config/racoon),tunnel模式配置文件如下图所示(示例):
config racoon 'racoon'
option foreground '0'
option zone 'vpn'
list listen 'wan'
config tunnel 'acme'
option exchange_mode 'aggressive'
option protocol 'any'
list p1_proposal 'p1_proposal_1'
list sainfo 'sainfo_1'
option pre_shared_key '12345678'
option remote '10.0.0.1'
option enabled '0'
config p1_proposal 'p1_proposal_1'
option encryption_algorithm 'aes 128'
option hash_algorithm 'sha1'
option dh_group '2'
option authentication_method 'pre_shared_key'
config sainfo 'sainfo_1'
option local_subnet '192.168.2.0/24'
option remote_subnet '192.168.1.0/24'
option p2_proposal 'p2_proposal_1'
config p2_proposal 'p2_proposal_1'
option encryption_algorithm 'aes 128'
option authentication_algorithm 'hmac_sha1'
option pfs_group '2'
注:传输模式下remote 值为anonymous,不再需要local_subnet 与remote_subnet 的值
各个配置的含义可以参考以下网址:https://http://www.wendangxiazai.com/doc/uci/racoon?s[]=racoon
ipsec简单介绍:ipsec框架包括:散列函数(MD5、SHA-1...),加密算法(DES、3DES、AES...),封装模式(传输模式、隧道模式...),互联网秘钥交换协议(IKE)。。。
启动脚本(/etc/init.d/racoon),篇幅过长,不再做列举,详细脚本内容可以参考以下网址:
https://http://www.wendangxiazai.com/doc/howto/vpn.ipsec.basics.racoon?s[]=racoon
实际启动的进程以及配置文件:进程启动方式:/usr/sbin/racoon -f /var/racoon/racoon.conf
/var/racoon/racoon.conf示例:
# auto generated by /etc/init.d/racoon
path pre_shared_key "/var/racoon/psk.txt";
path certificate "/var/racoon/cert";
padding {
maximum_length 20; randomize off;
strict_check off; exclusive_tail off;
}
timer {
counter 5; interval 20 sec; persend 1;
phase1 30 sec; phase2 15 sec;
}
listen {
isakmp 172.16.10.113;
isakmp_natt 172.16.10.113 [4500];
}
remote anonymous {
generate_policy on;
exchange_mode aggressive;
proposal_check obey;
nat_traversal on;
proposal {
lifetime time 28800 sec;
encryption_algorithm aes 128;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
}
sainfo anonymous {
pfs_group 2;
lifetime time 3600 sec;
encryption_algorithm aes 128;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
注:/var/racoon/psk.txt为预共享秘钥存放文件,/var/racoon/cert为证书存放文件夹。
4、racoon调试方法
通过前台启动racoon以及打印debug可以调试ipsec链接:/usr/sbin/racoon -dF -f /var/racoon/racoon.conf。同时可以查看系统log信息(logread)