![使用本地未绑定 DNS 服务器进行 Strongswan VPN 连接](https://linux22.com/image/1571692/%E4%BD%BF%E7%94%A8%E6%9C%AC%E5%9C%B0%E6%9C%AA%E7%BB%91%E5%AE%9A%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9B%E8%A1%8C%20Strongswan%20VPN%20%E8%BF%9E%E6%8E%A5.png)
想法:我想使用与 VPN 解决方案安装在同一台服务器上的非绑定 DNS,以便使用 DNS 为所有 VPN 连接阻止广告和类似的不需要的网站。
目前,未绑定是针对本地请求设置的。
如何设置 Strongswan/ipsec 以使用未绑定作为 DNS 服务器?我需要开放未绑定到互联网吗,还是我可以通过服务器从 VPN 连接本地查询 DNS?
提前致谢!
附言:如果您需要有关设置的任何其他信息,请随时询问。
答案1
一种方法是从您用于客户端虚拟 IP 的子网中为服务器分配一个 IP 地址。然后,将该 IP 地址作为 DNS 服务器分配给客户端,并从 IP 地址池中排除该 IP。或者,通过 Netfilter 的策略匹配模块过滤对该 IP 地址的访问(请参阅iptables-扩展您可以使用手册页 (man page) 来设置它只能通过 VPN 访问。
例如,如果您的 IP 地址池为192.168.8.0/24
(例如在rightsourceip
ipsec.conf 或 swanctl.conf 中的“pool”部分中配置),则您将其分配192.168.8.1
给服务器(在任何接口上,例如lo
),然后将池更改为192.168.8.2/24
(因此分配给客户端的第一个地址将是192.168.8.2
)。要分配192.168.8.1
为 DNS 服务器,请在 ipsec.conf 或 swanctl.conf 中的 pool 部分中进行配置rightdns
。
虽然您也可以使用服务器的公共 IP 地址,并且仅允许使用上述策略匹配通过 VPN 访问 UDP 端口 53,但这不适用于 Apple 客户端,因为它们不会通过 VPN 向服务器的公共 IP 发送数据包(因此您必须使 DNS 服务器公开可用,或动态添加允许从客户端的公共/NAT 的 IP 地址访问它的防火墙规则)。