让我来介绍一下我用来访问 lets-encrypt 认证的内部网站的一个小技巧。假设我拥有example.com
一个仅供内部使用的网站,我想访问它www.example.com
。在我的名称服务器(外部)上,我创建了一个指向我的外部 IP 地址的 A 记录(或者可能是 CNAME 记录),假设1.2.3.4
在我的防火墙上,我打开端口 80 并将其指向我的 Web 服务器,并允许lets-encrypt
并certbot
与我的 Web 服务器结合nginx
为域生成证书www.example.com
。
我在内部将 DNS 服务器设置为,如果我在内部查询,www.example.com
它将返回我的内部 Web 服务器的 IP(假设该服务器的 IP 地址为192.168.1.10
)。现在,如果我尝试访问办公室外的IP https://www.example.com
,则会被拒绝连接,但在办公室内,我的网站会出现在浏览器中,并且显示该网站是安全的,具有有效的证书。
现在,这个 Web 服务器实际上是一个 Synology NAS,尽管这并不重要,除了它还托管一个 OpenVPN 服务器,该服务器连接到端口 1149 并使用 的子网10.8.0.0/24
。因此,我也在防火墙上打开 1149 并将其转发到同一台服务器。
在设置这个 OpenVPN 隧道时,NAS 会向我导出一个 .openVPN 客户端,我可以使用它来配置我的客户端。
以下是该文件中未注释的行,但实际证书除外,并且我已经编辑了“远程”选项
dev tun
tls-client
remote 1.2.3.4 1194
pull
proto udp
script-security 2
comp-lzo
reneg-sec 0
cipher AES-256-CBC
auth SHA512
auth-user-pass
<ca>
CERTIFICATE HERE
</ca>
我理解我可以取消注释#redirect-getway def1
以使所有互联网流量通过隧道,我认为这将解决我如何显示www.example.com
为内部地址的问题,尽管我不确定是否需要取消注释此选项#dhcp-option DNS 192.168.1.10
。 它有什么作用,不清楚吗?
我还看到这里的一篇文章说将以下内容添加到 .openvpn 文件中
allow-pull-fqdn
route www.example.com vpn_gateway
route-nopull
但是我再次很难理解这到底是什么。
我已阅读此文件https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage但是像许多类似的手册一样,它已经假设你知道自己在做什么,它并没有真正深入说明它实际上是做什么的。
最后,我不明白10.8.0.0/24
这一切是怎么回事。这个文件中没有提到。客户端是否会作为与服务器的初始协议交换的一部分收到发回的信息?我的手机上有 openvpn,并在另一个环境中使用它,它确实从该范围内为我的手机网络分配了一个“私有”地址。