我需要能够通过互联网上的 VPN 将我的 Windows 用户连接到我的 Ubuntu 服务器,以便他们一旦连接到服务器就可以浏览共享文件夹。我基本上已经安装了 2 个 NIC。这是我的 etc/network/Interface 配置供您参考。我有 2 个在 Ubuntu 上运行的虚拟服务器,并且有第二个 HDD 共享我的文件。
auto lo
iface lo inet loopback
#The Primary network interface
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.2.100
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.2.1
dns-nameservers 208.67.222.222 208.67.220.220
dns-search google.com
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_hello 2
bridge_maxwait 0
post-up ip link set br0 address 00:10:18:77:5e:46
#Secondary network interface
# auto eth1
# iface eth1 inet static
# address 192.168.2.150
# netmask 255.255.255.0
# network 192.168.2.0
# broadcast 192.168.2.255
# gateway 192.168.2.1
# dns-nameserver 192.168.2.1 8.8.8.8
任何帮助都非常感谢。还请注意,我不是专家,而是新手。
答案1
您可以使用 OpenVPN 软件来创建 VPN 服务器。
在 Ubuntu 上,sudo apt-get install openvpn
。
您必须/etc/openvpn
为服务器创建一个配置文件:
port 1194
proto tcp
dev tun
pkcs12 openvpn.p12
dh dh1024.pem
server 192.168.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
只需将此文件命名server.conf
为实例并启动您的 OpenVPN 实例:
sudo service openvpn start
这将使用在 TCP 端口 1194 上的所有服务器 IP 上运行的 TUN 设备启动 VPN 服务器。VPN 隧道将位于子网 192.168.10.0/24 中,服务器将接收 192.168.10.1 地址。LZO
压缩已激活,并且ipp.txt
将使用一个文件来保留提供给客户端的 IP,以便始终为它们提供相同的 IP。
指出生参数是一个您必须使用以下命令自行生成的文件:
openssl dhparam -out dh1024.pem 1024
这棘手的此配置的一部分是证书的使用。这里我使用一个 PKCS12 文件,其中包含私钥及其证书以及 CA 的证书。
为了管理密钥和证书并轻松导出它们,我找到了tinyca2
可以在 Ubuntu 上安装的GUI 工具sudo apt-get install tinyca2
。此工具将创建一个本地独立 CA,您可以使用它来生成和导出私钥和公钥以及 X.509 证书。
配置中提到的所有没有绝对路径名的文件都位于/etc/openvpn
目录中。
一旦您的 OpenVPN 服务器运行,您将必须下载适用于 Windows 的 OpenVPN 版本(免费)并将其安装到您的 Windows 客户端上。
这些信息和软件可在OpenVPN 网站。
答案2
你需要完成几点:
1. 选择你的技术
选择要使用哪些协议来实现 VPN。
主要选项有:PPTP、L2TP/IPsec 和 OpenVPN。
点对点隧道协议
点对点隧道协议已经存在 15 年多了(Windows 95 已经有客户端了!)。它是微软对 PPP 的翻版。身份验证和加密依赖于 PPP 本身,因此它可以支持多种方法。长话短说,不要使用它. 安全性可以考虑破碎的如今。
L2TP/IPsec
第 2 层隧道协议 (L2TP) 本身也不提供加密。它由 IPsec 提供。这是 Windows 环境中受良好支持的配置。在 Linux 上配置它有时可能会很麻烦,但它可能是您的最好的选择因为您的客户端正在运行 Windows。
OpenVPN
摘录自维基百科:
它使用自定义安全协议,利用 SSL/TLS 进行密钥交换。它能够穿越网络地址转换器 (NAT) 和防火墙。
在配置 OpenVPN 时,您可以选择创建一个屯适配器或轻敲适配器。
- 这屯适配器在第 3 层工作,这意味着您可以为其分配一个 IP,并将其视为隧道后面 VPN 网络的下一跳路由器。
- 这轻敲适配器在第 2 层工作,因此您可以合并两端都在同一网络中。如果您需要 ARP 请求/回复(或任何第 2 层广播)到达 VPN 隧道的另一端,那么这非常有用。缺点:占用更多带宽。
这是最简单的配置,应该可以满足大多数需求在 GNU/Linux 环境中。
2.配置服务器
这当然取决于你之前的选择。我不会发布完整的指南,而是给你一些有用的指南:
- 点对点隧道协议-设置 PPTP 服务器在 Ubuntu Server 12.4 中。当前版本应该不会有太大差异。
- L2TP/IPsec- 这里需要配置 2 个子系统:IPsec 部分由奥普斯旺,但可以通过其他方式管理坚强的天鹅或者ipsec 工具. 3 个类似指南供您选择:Ubuntu 服务器 12.4,Ubuntu 服务器 14.04和一个通用的一个. 所有这些都依赖于 Openswan。
- OpenVPN- 这是迄今为止最容易的方法,但有一个很大的缺点:不支持本地 Windows。这不是一个大问题,因为它也支持 Windows,但它的安装不是那么无缝。你有一个很棒的导游在社区帮助 Wiki 中。
此外,您还面临另一个挑战:客户端如何进行自我验证,PSK 还是 PKI?
- 预共享密钥(PSK):如果您的客户端有动态 IP,或者您希望它们能够自由漫游并且仍能连接到您的服务器,则所有客户端都必须共享相同的 PSK。这意味着(至少在使用 IPsec 解决方案时)服务器将无法区分谁是谁(在配置隧道时)。
- 公钥基础设施(PKI):这是复杂的配置,每个客户端一个证书,一个根 CA 来管理所有证书(或子 CA)。如果您选择证书,请让我向您指出另一个资源。
3.配置客户端
仅仅因为 PPTP 和 L2TP/IPsec 是 Windows 原生的,并不意味着您不会遇到麻烦。
- 点对点隧道协议是一种遗留问题,你不应该遇到这方面的问题。
- L2TP/IPsec:您需要复制根证书并配置连接以使用它或配置 IPsec PSK
- OpenVPN:Windows 安装应该非常简单,但“必须”以管理员身份运行。如果您不想这样做,或者没有这个选项,可以以非管理员身份运行。
结论
- 不要使用 PPTP。
- 即使L2TP/IPsec可能是 Windows 环境的最佳选择,过度配置和设置可能会阻止您考虑它的可行性。更不用说本机 Windows 协议的双刃剑:客户端并不总是 Linux 友好的。
- OpenVPN不是一个标准解决方案,但它是易于安装和配置,它在 Linux 世界中得到了相当广泛的扩展,并且在 Linux 和 Windows 社区中都得到了大量的支持。