我正在尝试使用以下方式获取连接到 Cisco VPN 的工作环境IPsec在运行Mac OS X 版本 10.5(豹)。
当我连接到 VPN 时,我可以顺利连接到网络中的其他计算机,其他计算机可以使用 VPN 分配的 IP 地址(例如,通过 SSH)重新连接到我的 Mac。但是,Mac 本身不能连接到该 IP 地址。这对于此环境很重要,因为对于我所做的某些开发工作,我需要一个可以从我的 Mac 和网络中的其他计算机访问的通用 IP 地址。
使用 Cisco 编写的 VPN 客户端,成功建立连接,并且所有流量都通过 VPN 路由(这是 VPN 本身的要求)。我尝试查看路由表,但 Cisco VPN 客户端似乎并没有真正更改路由表。此外,它ifconfig
不会在任何接口中显示新 IP 地址 - 但我可以在 VPN 客户端应用程序中找到它。我不太清楚它如何在不更改路由表的情况下路由流量,但也许这不是重点。
我也尝试过Shrew VPN 客户端。我设法为 10.5 构建了源代码并使其运行。它也能正常连接,但表现出相同的症状。此 VPN 客户端确实更改了路由表并在接口ifconfig
下显示 IP 地址tap0
。但是,我仍然无法正确设置路由表以便能够连接到 VPN 分配的本地 IP 地址。
以下是路由表的一个例子(删除了一些不重要的内容):
未连接到 VPN:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.1 UGSc 12 27 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 50 69556 lo0
192.168.1 link#4 UCS 8 0 en0
192.168.1.1 0:1f:90:5c:b2:e5 UHLW 10 744 en0 1188
192.168.1.111 127.0.0.1 UHS 1 768 lo0
连接到VPN(IP地址为172.25.187.40):
Destination Gateway Flags Refs Use Netif Expire
default 172.25.187.40 UGSc 14 46 tap0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 49 68374 lo0
172.25.187/24 link#12 UC 2 0 tap0
172.25.187.40 82:1e:79:f7:7:6a UHLW 6 0 lo0
172.25.187.255 ff:ff:ff:ff:ff:ff UHLWb 3 23 tap0
192.168.1 link#4 UCS 8 0 en0
192.168.1.111 127.0.0.1 UHS 0 750 lo0
重要内容如下ifconfig
:
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::225:4bff:fe9c:df3a%en0 prefixlen 64 scopeid 0x4
inet 192.168.1.111 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:25:4b:9c:df:3a
media: autoselect (100baseTX <full-duplex,flow-control>) status: active
supported media: none autoselect 10baseT/UTP <half-duplex> 10baseT/UTP <full-duplex> 10baseT/UTP <full-duplex,flow-control> 10baseT/UTP <full-duplex,hw-loopback> 100baseTX <half-duplex> 100baseTX <full-duplex> 100baseTX <full-duplex,flow-control> 100baseTX <full-duplex,hw-loopback> 1000baseT <full-duplex> 1000baseT <full-duplex,flow-control> 1000baseT <full-duplex,hw-loopback>
fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078
lladdr 00:25:4b:ff:fe:9c:df:3a
media: autoselect <full-duplex> status: inactive
supported media: autoselect <full-duplex>
tap0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1380
inet 172.25.187.40 netmask 0xffffff00 broadcast 172.25.187.255
ether 82:1e:79:f7:07:6a
open (pid 7916)
我尝试了各种路由,但都没有让我从我的 Mac 连接到 172.25.187.40。
我也尝试过使用 ipfw 来转发发送至的所有 IP 流量172.25.187.40
,
127.0.0.1
但我对此没有经验,所以也许我做错了。
我该如何解决这个问题?
答案1
我认为您需要 lo0 上的 172.25.187.40 网关 127.0.0.1 的主机路由。您应该能够执行类似以下操作...
sudo route add -host 172.25.187.40 127.0.0.1
...但一定要查看手册页,尤其是有关和的route(8)
部分。-interface
-ifscope
不过,我有点担心,弄乱 172.25.187.40 的路由会破坏您的 VPN 连接,至少会破坏弄乱您的路由表的客户端的连接。
顺便说一句,Cisco VPN 客户端会加载一个或两个 NKE(网络内核扩展 - 特定于网络的内核扩展或 kext),它们会直接在内核中处理 VPN 魔法,而不会弄乱路由表。不幸的是,这意味着 Cisco 的代码在您的内核中运行,因此如果它有错误,它可能会导致整个系统崩溃。