RSA Signature(RSA数字签名)认证的配制
Openswan支持许多不同的认证方式,包括RSA keys、pre-shared keys或x.509证书方式。RSA Signature比较简单,我先介绍下所要使用的命令
生成一个新的RSA密钥对
#ipsec newhostkey --output /etc/ipsec.secert
按left或right格式生成RSA Sig
#ipsec showhostkey --left(或--right)
知道了上面的命令,我们就可以配置一个net-to-net,就是网关对网关的通讯。所在的Linux主机为通讯的网关,作为其子网的出口,对于子网的用户来所是透明的,远程的子网在通讯后可以像自己的局域网一样的访问。
本文使用VMWare架设起一个四台虚拟Linux主机来进行试验。因为要在不同的机子上进行配置,所以请读者认清主机名。
192.168.183.44(子网客户机,计算机名RA)
<->
192.168.49.2(Left网关主机,计算机名melin,同时eth1配置为192.168.183.1)
<->
192.168.49.3(Right网关主机,计算机名right,同时eth1配置为192.168.233.1)
<->
192.168.233.44(子网客户机,计算机名RB)
两个网关主机当然要安装好Openswan。同时用iptabels配置好NAT伪装。
然后我们运行下面的命令
//melin
#ipsec newhostkey --output /etc/ipsec.secert
#ipsec showhostkey --right >> /etc/ipsec.conf
#vi /etc/ipsec.conf //编辑ipsec.conf配置文件
#scp /etc/ipsec.conf root@right_GW_ipaddress:/etc/ipsec.conf //把ipsec.conf拷贝到right网关,目的是为了让right的到left的rsasig。
//right
#ipsec newhostkey --output /etc/ipsec.secert
#ipsec showhostkey --right >> /etc/ipsec.conf
#vi /etc/ipsec.conf
#scp /etc/ipsec.conf root@left_GW_ipadress:/etc/ipsec.conf
然后分别从前启动ipsec服务
#ipsec setup restart //这个因为你的系统不同点不同
这里的编辑ipsec.conf应该为(配置文件中的#为注释,和以上shell命令不同)
version 2.0
config setup
interfaces=%defaultroute
nat_traversal=yes
conn %default
authby=rsasig
compress=yes
#关掉 Opportunistic Encryption
include /etc/ipsec.d/examples/no_oe.conf
conn net-to-net
left=192.168.49.2
leftsubnet=192.168.183.0/24
leftid=@melin
leftnexthop=%defaultroute
right=192.168.49.3
rightsubnet=192.168.233.0/24
rightid=@right
rightnexthop=%defaultroute
# RSA 2192 bits melin Mon May 29 03:42:49 2006
leftrsasigkey=0sAQ...(leftrsasigkey值,省略)
# RSA 2192 bits right Wed May 31 22:11:59 2006
rightrsasigkey=0sAQ...
auto=add
然后在任意一方网关主机运行
ipsec auto --up net-to-net,这个时候,两个客户机之间应该可以互相ping的通,就像在一个内网一样。
比如在RA上可以
$ping 192.168.233.44
在ping的过程中,在任意一个网关上用tcpdump嗅探
#tcpdump -i eth0
可以看到这样的包
IP 192.168.233.44 > 192.168.183.44:icmp 64:echo request seq 10
IP 192.168.49.2 > 192.168.49.3: ESP(spi=0xeb73b78b,sed=0xa)
IP 192.168.49.3 > 192.168.49.2: ESP(spi=0x1601e0bd,sed=0xb)
可以看到两个网关已经用ESP在通讯,说明成功。
值得注意的是,如果网关主机开了iptables来做IP伪装(MASQUERADE)或NAT,需要竞争两个子网地址的转发,比如在我们例子中的Left主机上原来有
#echo 1 > /proc/sys/net/ipv4/ip_forward
#iptables -t nat -A POSTROUTING -o eth0 -s 192.168.183.0/24 -j MASQERADE
把改为
#iptables -t nat -A POSTROUTING -o eth0 -s 192.168.183.0/24 -d ! 192.168.233.0/24 -j MASQERADE
即不转发目标地址为Right主机下的子网。
另外,这一行
include /etc/ipsec.d/examples/no_oe.conf意为关闭Opportunistic Encryption在你不知道她到底做了什么之前,还是关掉她为好,打开no_oe.conf文件,发现其内容如下,我们将在本文的第五部分讨论这个话题。
conn block
auto=ignore
conn private
auto=ignore
conn private-or-clear
auto=ignore
conn clear-or-private
auto=ignore
conn clear
auto=ignore
conn packetdefault
auto=ignore