我的工作场所提供 Cicso VPN,我正尝试在家中(通过 ADSL)使用它进行远程工作。我认为工作场所的 VPN 是 IPSec,因为它要求我拥有 IPSec ID 和 IPSec 密钥才能连接。
连接 VPN 隧道工作正常,但不久之后它就会停止传输字节,从而无法执行任何有用的操作。
有趣的是,我可以通过使用我的手机(4G)作为无线接入点并将我的笔记本电脑连接到该接入点来正常工作,而不是将我家里的 WiFi 路由器连接到 ADSL 调制解调器。
我联系了我的 ISP 来解决这个问题,并收到了一封电子邮件回复,其中提出了以下内容(以及其他一些建议):
- 为 VPN 端口 500(用于 IPSec VPN)、端口 1723(用于 PPTP VPN)和端口 1701(用于 L2tp- L2tp 路由和远程访问)启用端口转发。端口 500 可能列在服务列表下。[...] 注意:检查 WAN IP 是公共 IP 还是私有 IP。端口只能在公共 IP 地址上打开。
从技术上讲,客户端真的需要端口转发吗?如果真是这样,那么这是否也会阻止我家庭网络上的其他人从他们的笔记本电脑上做同样的事情(例如,如果我的一位同事来我家,也想连接到办公室的 VPN)?
- 默认情况下,路由器的防火墙配置为丢弃(删除)从网络外部发送到 WAN 端口的 ICMP 数据包。您的 VPN 可能需要 ICMP 数据包。
再次,这对于使 Cisco VPN 在客户端运行是否必要?
或者换句话说:是否有人使用此类 Cisco VPN 必须在其调制解调器/路由器上打开他们想要连接到 VPN 端点的端口?
答案1
通常不需要端口转发 - 一旦 VPN 客户端建立传出连接,路由器的防火墙就会将其保留在“状态表”中一段时间。(状态表还会告诉它通过 NAT 将传入数据包发送到何处。)
对于 TCP 来说,状态条目与 TCP 连接本身紧密对应 - SYN 建立两者,FIN 拆除两者。
然而,对于 UDP(思科 VPN 和“标准” IPsec NAT-T),一些路由器型号使用非常短暂的状态条目 – 例如,在 30 秒甚至 15 秒不活动后过期。这可以解释您遇到的问题。
尝试使用vpnc --dpd-idle 10
进行连接(如果在 Linux 上),或者ping -t <some_corp_server>
在使用 VPN 时保持运行,这样它就不会长时间处于空闲状态。