我使用 dd-wrt 作为我的家庭路由器设置,它一直运行良好。现在我想找到一种方法,让我在路上时能够使用我的 iPad 设置到我家庭网络的 IPSec 隧道。
目前,PPTP 非常不安全,所以我想使用基于 IPSec 的东西。根据我找到的信息,dd-wrt 不支持 IPSec。所以我认为可以在我的家庭网络中设置一个带有 racoon 的 Linux 机器作为 VPN 终端。
因此,以图形形式来说,
iPad(在路上)----------[互联网] ------[dd-wrt@home] ----[linuxbox@home]
在 dd-wrt 上,我进行了如下设置:
- 将端口 500 和 4500 转发到 Linux 机器 (udp/tcp)
- SPI 防火墙已启用
- IPSec 和 L2TP 直通已启用
在 Linux 机器上,IPv4 转发已启用
这是浣熊的设置
log debug;
#log notify;
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
listen {
adminsock disabled ;
}
mode_cfg {
network4 192.168.1.210 ;
pool_size 10 ;
netmask4 255.255.255.0 ;
dns4 192.168.1.1 ;
wins4 192.168.1.11 ;
}
remote anonymous {
exchange_mode aggressive ;
#my_identifier fqdn "vpn.foo.org" ;
peers_identifier fqdn "vpn.foo.org" ;
lifetime time 24 hour ;
proposal_check claim ;
generate_policy on ;
nat_traversal on ;
dpd_delay 20 ;
proposal {
encryption_algorithm aes ;
hash_algorithm sha1 ;
authentication_method xauth_psk_server ;
dh_group 2 ;
}
}
sainfo anonymous {
pfs_group 2;
lifetime time 24 hour ;
encryption_algorithm aes ;
authentication_algorithm hmac_sha1 ;
compression_algorithm deflate ;
}
因此这是一个非常普通的设置,我稍后会切换到使用证书。
现在,查看日志,racoon 在 Linux 机器上启动正常,但无论出于什么原因,它甚至没有看到任何与 iPad 协商流量的尝试,所以我一定是遗漏了什么。
我想知道的是找出缺少的东西。我怀疑需要在 dd-wrt 盒上进行一些设置,以便将 IP 协议 ID 50 和 51 流量从其发送到 Linux 盒。
我不太清楚将 IPSec 转发到 VM 所需的 iptables 规则。
我有以下内容,但我怀疑我需要一些预路由和可能的一些后路由规则。
iptables -I FORWARD 23 -p 50 -d 192.168.1.10 -j ACCEPT
iptables -I FORWARD 23 -p 51 -d 192.168.1.10 -j ACCEPT
以下内容似乎没有按预期工作。
iptables -t nat -I PREROUTING 2 -p 50 -d $(nvram get wan_ipaddr) -j DNAT --to 192.168.1.10
iptables -t nat -I PREROUTING 2 -p 51 -d $(nvram get wan_ipaddr) -j DNAT --to 192.168.1.10
调查笔记:
- 一开始无法连接。我怀疑我需要修改 iptables,但没有必要。将端口 500 和 4500 转发到端点就足够了。
- 看起来第一个数据包现在确实到达了浣熊手中。
- tcpdump 输出“17:45:50.652827 IP wan.isakmp > 192.168.1.10.isakmp:isakmp:阶段 1 I ident”
- 看起来协商确实开始了,但是在尝试协商加密类型时它就停止了。 来自 racoon 的系统日志的 pastebin:http://pastebin.com/RFmbJ7Hz
- 现在已经过了协商阶段,请求授权后隧道已建立。但流量没有流动。
- 读完更多内容后,我将 mode_cfg 中的子网设置为与端点上的默认子网不同的子网。我怀疑如果我希望本地机器能够与其通信,我需要设置路由。
- 现在,我的问题是 NAT-T 似乎不起作用,因为我无法获取互联网流量。