在花费了数小时进行故障排除、在本网站和其他网站上寻找潜在解决方案之后,我决定向我的上级寻求建议。我正在努力通过大学的 Cisco VPN 路由 Ubuntu 实例上的所有网络流量。使用内置网络管理器或 vpnc,我可以成功建立与 VPN 的连接,并可以通过 VPN 成功将流量路由到任何大学 IP。但是,除了这些特定的 IP 范围之外,我似乎无法想出任何能够成功映射 VPN 上所有网络流量的路由。
到目前为止,我已经尝试过:
路由添加-net 0.0.0.0 gw homeportal dev tun0
路由添加-net 0.0.0.0 tun0
路由添加-net 0.0.0.0 gw 128.122.252.77 dev tun0
路由添加-net 0.0.0.0 gw 128.122.252.77 dev eth0
iptables -A 转发 -o tun0 -j 接受 iptables -A 转发 -i tun0 -j 接受 iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
还有许多其他愚蠢、无效的事情,我记不太清楚,无法准确地记录下来。
此外,我尝试过路由较小的 IP 范围和特定的 IP,但都无济于事。我不太确定哪里出了问题,因为我能够观察到的影响范围是名称解析失败以及通过 VPN 路由流量失败。我在这里做错了什么?
编辑-
ip route show
以下是使用 VPNC 启动 VPN 连接后的输出:
默认通过 192.168.1.254 dev eth0 proto static 10.0.0.0/8 dev tun0 范围链接 91.230.41.0/24 dev tun0 范围链接 128.122.0.0/16 dev tun0 范围链接 128.122.252.68 通过 192.168.1.254 dev eth0 src 192.168.1.32 128.122.253.46 dev tun0 范围链接 128.122.253.79 dev tun0 范围链接 172.16.0.0/12 dev tun0 范围链接 192.168.0.0/16 dev tun0 范围链接 192.168.1.0/24 dev eth0 proto 内核范围链接 src 192.168.1.32 度量 1 193.175.54.0/24 dev tun0 范围链接 193.205.158.0/25 dev tun0 范围链接 193.206.104.0/24 dev tun0 范围链接 195.113.94.0/24 dev tun0 范围链接 203.126.200.0/24 dev tun0 范围链接 203.174.165.128/25 dev tun0 范围链接 212.219.93.0/24 dev tun0 范围链接 216.165.0.0/17 dev tun0 范围链接
更多信息-
我已经在 MS Windows 中通过默认配置的 Cisco AnyConnect 客户端成功路由了此 VPN 上的任意流量。以下是 AnyConnect 客户端运行时的路由表(这是位于同一路由器 192.168.1.254 后面的另一台计算机)。
IPv4 路由表 =========================================================================== 活跃路线: 网络目标网络掩码网关接口指标 0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.13 30 10.0.0.0 255.0.0.0 192.168.128.1 192.168.128.197 2 91.230.41.0 255.255.255.0 192.168.128.1 192.168.128.197 2 127.0.0.0 255.0.0.0 链接上 127.0.0.1 306 127.0.0.1 255.255.255.255 链接中 127.0.0.1 306 127.255.255.255 255.255.255.255 链接中 127.0.0.1 306 128.122.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2 128.122.252.68 255.255.255.255 192.168.1.254 192.168.1.13 31 172.16.0.0 255.240.0.0 192.168.128.1 192.168.128.197 2 192.168.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2 192.168.1.0 255.255.255.0 链接中 192.168.1.13 286 192.168.1.13 255.255.255.255 链接中 192.168.1.13 286 192.168.1.254 255.255.255.255 链接中 192.168.1.13 31 192.168.1.255 255.255.255.255 链接中 192.168.1.13 286 192.168.31.0 255.255.255.0 链接中 192.168.31.1 276 192.168.31.1 255.255.255.255 链接中 192.168.31.1 276 192.168.31.255 255.255.255.255 链接中 192.168.31.1 276 192.168.128.0 255.255.255.0 链接中 192.168.128.197 257 192.168.128.197 255.255.255.255 链接中 192.168.128.197 257 192.168.128.255 255.255.255.255 链接中 192.168.128.197 257 192.168.203.0 255.255.255.0 链接中 192.168.203.1 276 192.168.203.1 255.255.255.255 链接中 192.168.203.1 276 192.168.203.255 255.255.255.255 链接中 192.168.203.1 276 193.175.54.0 255.255.255.0 192.168.128.1 192.168.128.197 2 193.205.158.0 255.255.255.128 192.168.128.1 192.168.128.197 2 193.206.104.0 255.255.255.0 192.168.128.1 192.168.128.197 2 195.113.94.0 255.255.255.0 192.168.128.1 192.168.128.197 2 203.126.200.0 255.255.255.0 192.168.128.1 192.168.128.197 2 203.174.165.128 255.255.255.128 192.168.128.1 192.168.128.197 2 212.219.93.0 255.255.255.0 192.168.128.1 192.168.128.197 2 216.165.0.0 255.255.128.0 192.168.128.1 192.168.128.197 2 224.0.0.0 240.0.0.0 链接中 127.0.0.1 306 224.0.0.0 240.0.0.0 链接上 192.168.1.13 286 224.0.0.0 240.0.0.0 链接上 192.168.203.1 276 224.0.0.0 240.0.0.0 链接中 192.168.31.1 276 224.0.0.0 240.0.0.0 链接上 192.168.128.197 10000 255.255.255.255 255.255.255.255 链接上 127.0.0.1 306 255.255.255.255 255.255.255.255 链接中 192.168.1.13 286 255.255.255.255 255.255.255.255 链接中 192.168.203.1 276 255.255.255.255 255.255.255.255 链接中 192.168.31.1 276 255.255.255.255 255.255.255.255 链接中 192.168.128.197 10000 ===========================================================================
答案1
您的本地网络是 192.168.1.0/24,如路由表中的此行所示:
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.32 metric 1
您的 VPN 网络是 10.0.0.0/8,如下行所示:
10.0.0.0/8 dev tun0 scope link
目前,您的默认路由器是:
default via 192.168.1.254 dev eth0 proto static
这当然是你该做的不是因为它属于您的本地 LAN:因此您的所有内容都通过本地网关路由,就好像 VPN 不存在一样。
You do have however, the all-important statement
128.122.252.68 via 192.168.1.254 dev eth0 src 192.168.1.32
这是到您的 VPN 提供商的路由。
编辑:
我没有意识到路由表只是从您的 VPN 获得的,无需您的干预。这可能(间接地)表明您的服务提供商只愿意通过接口 tun0 转发表中明确允许的流量,并且可能已采取进一步措施阻止所有其他流量,在这种情况下,您的努力将是徒劳的。
但是,假设您的提供商愿意转发您的所有流量,您需要执行以下步骤。
首先,你需要找出另一端是否有网关愿意接受你的连接,因为我们需要它的 IP 地址。我将给你四种方法来做到这一点。
1)将电脑连接到VPN,尝试以下命令:
sudo dhclient -v tun0
如果一切顺利,你应该看到包含这一行的回复:
DHCPOFFER of a.b.c.d from x.y.w.z
xywz 是本地网关的 IP 地址。您可能需要在测试后关闭 VPN,甚至可能需要重新启动 PC,因为我们会把路由表弄乱。
2)或者,您可以尝试导航到其中一个允许的站点(那些在您的路由表中显示为通过tun0界面),然后发出命令:
ip neigh show
您应该会获得通过 ARP 协议联系的 PC 列表,其中包含 MAC 和 IP 地址;最有可能的是,您会收到零个或一个回复。如果您收到一个回复,那么这就是您的路由器。
3)如果你没有收到这样的回复,那么你可以尝试
sudo nmap -sn 10.0.0.0/8
(这会非常慢)。您的网关将是一在列出的 PC 中,最有可能的是地址以 .1 或 .254 结尾的 PC(如果存在的话)。
4)使用tcpdump命令:
sudo tcpdump -n -i tun0
并查看命令输出的 IP 地址。
如果您对此测试也没有得到适当的答复,则意味着某人确实在他的网络中拧紧了螺丝。
但让我们乐观一点,假设您现在有一个远程路由器的候选 IP 地址 xwyz。您将需要删除默认网关(使用 sudo!):
ip route del default via 192.168.1.254
添加新的:
ip route add default via x.w.y.z
并尝试导航。
让我重复一遍:由于您的提供商仅允许通过其 VPN 向少数选定 IP 地址发送流量,因此他可能采取了额外措施(=防火墙)来阻止聪明的用户强制通过其 VPN 发送通用流量。在这种情况下,您无能为力。但如果他没有这样做,上述步骤应该可以帮助您找到解决方案。
答案2
您的所有route
命令都缺少网络掩码,因此它们仅匹配特定0.0.0.0
地址,而不是整个互联网。因此,在您尝试的第一个命令中将其替换0.0.0.0
为:0.0.0.0/0
ip route add -net 0.0.0.0/0 gw homeportal dev tun0
可能有一个问题,我不确定您的 VPN 客户端是否能自行解决:隧道端点需要排除通过 VPN 路由,它必须通过您的eth0
接口进行路由。因此,如果添加此默认路由会破坏您的 VPN,请为您的 VPN 端点添加特定路由:
ip route add <ENDPOINT>/32 dev eth0