我在云中有一个小型(Debian)虚拟机和一个家庭网络,其中 Raspberry Pi 充当主防火墙/网关。网关支持外部/内部邮件和 Web 服务,并允许 SSH 进入,然后从那里通过 SSH 连接到我家中的其他机器。云服务器目前支持两个个人静态(Jekyll 构建)网站和辅助邮件服务器。因为它有一个非阻塞的静态 IP 地址,所以我家的所有邮件都必须通过它路由。
我的 (Windows) 笔记本电脑和 iPhone 可以在外出时访问邮件,因为它们在外部使用该名称mail.chandlerfamily.org.uk
作为 IMAP 和 SMTP 邮件服务器的名称。在家时,我的内部 DNS 服务器将这些用作 xxx200,即邮件服务器网关的地址。
我的笔记本电脑还可以访问我当前公开的网关上支持的网站(但不愿意这样做)。
它还为我正在内部开发的多个网站提供服务(此处用 表示dev.chandlerfamily.org.uk
),这些网站具有不同的内部地址。这样我就可以通过在端口 80 上支持它们的协议并将提供的密钥复制到我网络上的相应内部机器来从它们那里获取 Let's Encrypt 证书。
以下是 ASCII 图表,用于表示
(www.chandlerfamily.org.uk) (home.chandlerfamily.org.uk) (dev.chandlerfamily.org.uk)
(mail2.chandlerfamily.org.uk) (Secondary MX) (mail.chandlerfamily.org.uk) (Primary MX)
------------------------------ ----------------
| Cloud Server | | ISP Router |
| | | |
443->| Nginx 2 Static Web Sites |<-22 -----------------
80 ->| Certbot for Keys | |(port fwd) | DMZ
25 ->| PostFix Mail |<-25(1) V -------------------------
------------------------------ High Ports | | | | | | |
(for game) 80 443 25 587 465 993 22
| | | | | | | |
---------- V V V V V V V V
|Laptop | 443->(home.chandlerfamily.org.uk) (internal PC) ----------------------------
| | 993 (587) (mail.chandlerfamily.org.uk) | Gateway Machine |
---------- (all outgoing mail) 25(1)<-| (x.x.x.200) |
(via cloud server) | DNS and DHCP Server |
(non blocked ip address) | Mail Server Certbot |
| Web Site |
----------------------------
(all ports open)
home.chandlerfamilly.org.uk, mail.chandlerfamily.org.uk
appear as x.x.x.200
dev.chandlerfamily.org.uk as my internal dev machine
多年来,这种方法一直很有效,尽管我怀疑可能存在一些与邮件相关的漏洞,因为我有时会在已发送邮件文件夹中看到垃圾邮件。但我不确定。
我最近开始更好地了解我拥有一段时间的 Synology NAS(到目前为止只是一个文件备份存储库),并发现它具有 VPN 服务器功能。我想我可以利用它进一步锁定我的家。同样,也许可以用类似的方式进一步保护我的云服务器。然而,在我这样做并破坏多年来一直非常稳定的环境之前,我想完全理解它。正如这个问题的标题所暗示的那样,我正在努力理解这些概念。
这是我的计划的 ASCII 图,O->VPNx
是到服务器的传出 VPN 连接VPNx->O
。
(www.chandlerfamily.org.uk) (home.chandlerfamily.org.uk) (dev.chandlerfamily.org.uk)
(mail2.chandlerfamily.org.uk) (Secondary MX) (mail.chandlerfamily.org.uk) (Primary MX)
------------------------------ ---------------- ---------------
| Cloud Server | | ISP Router | (port fwd) | Home NAS |
| | | |O-VPN2----->| x.x.x.10|
443->| Nginx 2 Static Web Sites | ----------------- |VPN Server |
80 ->| Certbot for Keys | (port fwd)| (port fwd)| | ---------------
25 ->| PostFix Mail Open VPN Server|O<-VPN1 V | |
| (mail fwd to home)25->|O->VPN2 High Ports| 25 80
------------------------------- (for game)| | |
V V V
------------------------ (internal PC) -----------------------------------------------
|Laptop (443, 587, 993)|O->VPN2 | | | Gateway Machine |
------------------------ | | > Certbot for Keys for internal web sites|
| | DNS and DHCP Server x.x.x.200 |
VPN1<-O| > Mail Server Web Server |
-----------------------------------------------
(all ports open)
Internally home.chandlerfamilly.org.uk
and mail.chandlerfamily.org.uk
appear as x.x.x.200
在此设置中,我在笔记本电脑(和 iPhone)上安装了 OpenVPN 客户端,在云服务器上安装了 Debian OpenVPN 包。
这是我不明白的一点:笔记本电脑/iPhone 如何知道 SMTP 邮件服务器和 IMAPS 服务器的地址?在家时,OpenVPN 客户端不会运行,因此笔记本电脑和 iPhone 通过地址“mail.chandlerfamily.org.uk”访问邮件(SMTP 和 IMAPS)服务器,DNS 服务器将其路由到 IP 地址 xxx200。外出时,“mail.chandlerfamily.org.uk”是我的 ISP 分配给我的 IP 地址,虽然 SMTP 流量正常,但在我以后的场景中,IMAPS 会被阻止。
或者,我可以使用名称“imap.home”,它在家里也指向 xxx200,但在外出时,“imap.home”是否会通过 VPN 暴露?我认为 VPN“.opvn”文件有效地告诉 OpenVPN 客户端将 10.8.0.1 公开为隧道地址,但是什么告诉手机(或笔记本电脑)这是查找子网 xxx0/24 的路由,它如何暴露 DNS 的位置?
同样,对于访问我的 LAN 内的各种其他服务,特别是通过 SSH 进入不同机器的能力,笔记本电脑在外出时如何找到它们?(这个 iPhone 也需要这个 - 我有时会从 Whatsapp 收到图片,然后与 FTPManager Pro 共享以存储在服务器上)。
注意:我可以看到.opvn
Synology NAT 生成的文件有两个注释掉的条目(尽管我勾选了允许客户端访问本地网络的选项 - 但我完全无法找出它的作用),这两个是
- #重定向网关 def1
- #dhcp 选项 DNS DNS_IP_ADDRESS
我可以编辑此文件来更改这些内容吗(证书是否受影响?)?如果可以,这些是否是我想要的,以便笔记本电脑和 iPhone 始终可以看到内部网络?
我怀疑第一个不是我想要的。如果我在这些设备上浏览随机网站,我想直接进入互联网。但第二个暴露了什么?我能看到“*.home”地址吗?