我注意到我看到的 DNS 代理服务使用了 openvpn 并且据称只通过 VPN 隧道传输 DNS 流量,这会掩盖 VPN 的地理位置用户并允许用户系统使用他们的初始连接进行所有其他流量。
我发现这对于我正在开展的一个使用 VPN 的项目非常有用,我希望通过隧道路由的流量将是专门针对我们拥有的某些内部网站点的 DNS。
我曾尝试思考他们的设置是如何通过 openvpn 工作的,但似乎找不到有关 openvpn 的源/目标过滤的信息。我发现的例子是 openvpn 管理员过滤客户端访问流量,这样一来,一个 openvpn 客户端就可以与另一个 openvpn 客户端通信,而这并不是我想要的。
我能想到的唯一实现这一点的方法是,如果 openvpn 为管理员提供过滤选项,管理员可以将其放入排除 IP 过滤器列表中。例如,如果用户通过 DNS 查询 google.ca,openvpn IP 排除过滤器将看到 google.ca(我知道 openvpn 只达到第 3 层,因此传入的 google 请求只是排除列表中没有的 google 的 IP)IP 不是通过隧道进行通信的可接受 IP,但如果用户想要与 myIntranetServer.com 通信,vpn 知道允许通信通过 VPN。
当 openvpn 服务器拒绝 google.ca IP 流量通过时,由于 google 的 IP 不在允许通过 VPN 传输的 IP 列表中,它会向 openvpn 客户端发送回通知,以便客户端操作系统进行 DNS 查询,而不是 openvpn 的 DNS 路由。
由于我不熟悉 openvpn 提供的所有选项,并且似乎无法找到此类设置的明确信息,你们认为该服务如何做到这一点?
我找到了一个涉及该主题的例子,但我不知道如何指定流量: OpenVPN - 客户端流量并非完全通过 VPN 路由
答案1
通过从不同角度研究这个问题,我发现使用 openvpn 路由可以传输特定内容。
我发现可以使用以下类型的设置:
# redirect all default traffic via the VPN
redirect-gateway def1
# redirect the Intranet network 192.168.1/24 via the VPN
route 192.168.1.0 255.255.255.0
# redirect another network to NOT go via the VPN
route 10.10.0.0 255.255.255.0 net_gateway
# redirect a host using a domainname to NOT go via the VPN
route www.google.ca 255.255.255.255 net_gateway
但是最后一个配置变量:
# redirect a host using a domainname to NOT go via the VPN
route www.google.ca 255.255.255.255 net_gateway
当它查询 google.ca 的解析时,它只会过滤查询响应中的第一个 IP。