我有一个通过 OpenVPN 连接的远程服务器。OpenVPN 服务器配置为不转发 ipv4 包,因此“互联网流量”不会经过该服务器。
现在我想将单个 URL 分配给网络内的 IP 地址。例如:每当我连接到 VPN 并在浏览器中输入 random.org 时,它都会将我重定向到我的 VPN 子网中的 10.8.42.12。
我不知道这是否可行或可取?我搜索过解决方案,但没有找到。可能是因为我没有使用正确的术语?
任何帮助或评论都值得赞赏。谢谢!:)
答案1
您需要在某处设置 DNS A 记录,可以在您的 VPN 网络上,也可以在客户端可以访问的其他网络上。
如果您在 VPN 网络上有 DNS 服务器(或可从 VPN 连接路由的网络),那么您可以配置 openVPN 以将 DNS 服务器地址推送到客户端,这样当它们连接时,DNS 的请求将转到您指定的包含所需 A 记录的服务器。此设置意味着当客户端连接到 VPN 时,URL 只会解析到该 IP。
看看这个:
https://openvpn.net/index.php/open-source/documentation/howto.html#dhcp
编辑:
我忘了说,更改客户端 DNS 设置时必须考虑一些事项。客户端缓存可能仍包含查询,在这种情况下,您必须考虑设置 A 记录的 TTL,以便它尽快过期。
答案2
使用hosts
文件
10.8.42.12 example.org
或将条目添加到DNS
服务器。创建文件,内容修改ns1.exampledns.com
为指向有效地址
; Zone file for example.org
$TTL 3600
$ORIGIN example.org
@ IN SOA ns1.exampledns.com. root.example.org. (
2012033101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
43200 ) ; Negative Cache TTL
IN NS ns1.exampledns.com.
IN NS ns2.exampledns.com.
@ IN A 10.8.42.12
www IN A 10.8.42.12
然后将区域添加到/etc/bind/named.conf.local
zone "example.com" {
type master;
file "/etc/bind/db.example.org.conf";
};
答案3
当然,根据 tomstephens89 的回答,DNS 解决方案是一种可能的答案,但它只有在您输入任何域名时才有效,而且如果客户端更改服务器推送的 DNS 服务器,它将不起作用。
您真正想要的是一个解决方案,有时称为 Captive Portal。我并不完全属于该主题,但 SQUID 是一个功能强大的 HTTP 代理(可以配置为透明代理 - 即无需在客户端进行任何配置),可以帮助将用户重定向到您的页面。