如何配置 DD-WRT 以将 IPSec 流量转发到内部服务器以支持公路战士配置?

jnm*_*man 5 networking vpn dd-wrt ipsec iptables

我使用 dd-wrt ​​作为我的家庭路由器设置,并且运行良好。现在,我想找到一种方法,以便在旅途中能够使用我的 iPad 设置一条连接到我的家庭网络的 IPSec 隧道。

PPTP 在这一点上非常不安全,所以我想使用基于 IPSec 的东西。根据我所能找到的,dd-wrt ​​不支持 IPSec。所以我认为有可能在我的家庭网络中设置一个带有 racoon 的 linux box 作为 VPN 终结者。

所以以图形的形式,

iPad(在路上)------- [互联网] ------ [dd-wrt@home] ---- [linuxbox@home]

在 dd-wrt ​​上,我设置了以下内容:

  • 将端口 500 和 4500 都转发到 linux box (udp/tcp)
  • SPI 防火墙已启用
  • 已启用 IPSec 和 L2TP 直通

在 linux box 上,启用了 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 ;
}
Run Code Online (Sandbox Code Playgroud)

所以一个非常简单的设置,我稍后会切换到使用证书。

现在,查看日志,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
Run Code Online (Sandbox Code Playgroud)

以下似乎没有按预期工作。

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
Run Code Online (Sandbox Code Playgroud)

调查笔记:

  • 它开始无法连接。我怀疑我需要修改 iptables 但没有必要。将端口 500 和 4500 转发到端点就足够了。
  • 看起来第一个数据包现在确实到达了浣熊。
  • tcpdump 输出 "17:45:50.652827 IP wan.isakmp > 192.168.1.10.isakmp: isakmp: phase 1 I ident"
  • 看起来协商确实开始了,但是在尝试协商加密类型时它只是停止了。浣熊的系统日志中的 pastebin:http : //pastebin.com/RFmbJ7Hz
  • 现在已经过了协商部分,并且在请求身份验证后建立了隧道。但交通不畅通。
  • 阅读更多内容后,我将 mode_cfg 中的子网设置为与端点上的默认子网不同的子网。我怀疑如果我希望本地机器能够与之交谈,我需要设置一条路线。
  • 现在,我的问题是 NAT-T 似乎不起作用,因为我无法获得互联网流量。