我已将 OpenVPN 配置为将所有 IPv4 流量从客户端路由到服务器,并通过 NAT 连接到互联网(openvpn/server.conf 包含以下内容):
push "redirect-gateway def1"
我正在使用一条规则将流量 NAT 到网络iptables
:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
网络流量和网络流量运行正常(HTTP、HTTPS)。但是,我无法让邮件客户端(在本例中为 OS X 上的 Mail.app)连接到邮件服务器。我可以通过从 -> 运行 SSH 隧道localhost
,server
然后将传出的 SMTP 服务器指向 来验证邮件服务器是否正在运行以及我的设置是否正确localhost:port
(这有效)。但是,这有点……笨拙,我想知道为什么我不能通过 VPN 运行它 - 唯一的问题似乎是localhost
->server
连接。
传入 POP 帐户工作正常。不过,我不太确定应该在哪里查找,或者如何解决传出 SMTP 问题 - 任何想法都值得赞赏。
答案1
我认为正在发生的情况如下:
当您设置 时push "redirect-gateway def1"
,您将更改 Mac 的默认路由以通过 VPN,但会保留一个主机特定路由,以便客户端可以找到 OpenVPN 服务器。此基于主机的路由将通过 ISP 的网关等。如果您没有此主机特定路由,您的 VPN 连接将中断,因为您的 Mac 将无法再路由到 OpenVPN 服务器。
因此,当您在 Mac 的客户端上指定邮件服务器时,您不是通过 VPN,而是通过 Internet。如果您的 ISP 阻止了 SMTP (tcp/25),那么您将无法连接。我只是想确认您的 Mac 是否以这种方式设置了邮件。
有几种方法可以解决这个问题:
1) 不关心通过 VPN 路由邮件。ISP 应该允许 SMTP 提交(端口 587)或 SMTPS(端口 465)。您可以将邮件服务器配置为需要 SSL,这样您的流量就应该是安全的。
2) 如果您希望所有邮件都通过 VPN 发送,并且 VPN 始终处于开启状态,则将 SMTP 进程绑定到所有接口,包括 OpenVPN 接口。然后将 Mac 邮件客户端配置更改为指向 10.8.0.1。