我目前在 3 台 Linux 服务器上运行一个网站。我想设置一个私有网络,只允许端口 80 流量到其中一台服务器。我还想设置一个 vpn,这样只有我可以通过 ssh 或任何端口访问服务器进行开发/调试。
设置起来有多难?我需要准备什么?企业/商业路由器是否内置有 VPN 功能?
我该如何处理 DNS?例如 www.mydomain.com 需要指向路由器,路由器会将流量转发到 Web 服务器。我是否应该将 A 记录设置为路由器,并以某种方式告诉路由器将 http 请求发送到哪个服务器?我该如何让 server1.mydomain.com 在私有网络内解析为 server1(无需编辑主机文件)?我是否需要运行自己的 DNS(例如 powerdns?)来执行此操作?
答案1
获得一个好的防火墙。我建议Astaro 安全网关,但还有不少其他软件可以实现 VPN 和您所需的(标准)流量限制。
如果您有一台配备两个 NIC 的中型 PC,Astaro 软件是免费的。从刻录 CD 开始,您可以在 60 到 90 分钟内完成安装和配置。或者您可以购买优质硬件设备和服务/支持,价格约为 1200 美元。我会选择设备和支持。
答案2
换作是你,我会继续在每个 Linux 机器上安装 shorewall,因为它是一种非常有效且易于使用(一旦你理解了它)的防火墙解决方案。从技术上讲,如果你已经在路由器/防火墙后面,就不需要它了,但有了它,我晚上睡得更好。
配置几乎需要关闭防火墙的所有进出端口,除了您需要的端口:SSH、HTTP、HTTPS。
从此以后,您需要担心的只是一些小的路由问题:首先,您需要将 A 记录指向外部(互联网端)静态 IP 地址。如果您没有静态 IP,那么您需要查看动态 DNS 服务,例如 DynDNS.org。
其次,您需要告诉路由器(负责响应所有对外部 IP 地址的请求)如何处理这些请求。因此,将您所需的端口(22、80、443)转发到您希望接受外部请求的服务器。
因此,由于我们在路由器上进行了端口转发,因此您现在可以从互联网通过 SSH 连接到您的 Web 服务器 (web1)。如果您需要访问 web2 或 web3,您可以通过 web1 代理您的 ssh 连接(这可以通过使用 .ssh/config 文件和 ProxyCommand 选项自动完成):
ssh web1 nc -w 1 web2 22
您还可以进行端口转发来访问 web2 和 web3 上的服务:
ssh web1 -L 9999:web2:80 (本地端口 9999 指向 web2:80)
大多数情况下,从管理员/开发人员的角度来看,ssh 是 VPN 的可接受替代方案。
答案3
Hamachi LogMeIn 有一个免费版本(不是网络版本;一个免费的独立安装程序),您可以非常轻松地使用它创建一个可用的 VPN。