目标:当我的笔记本电脑连接到开放的热点/接入点时,我希望能够通过我的家用 PC 安全地使用互联网。
我知道我可以使用 SSH 隧道/SOCKS 代理,但我不想摆弄应用程序(让他们使用它,如果可能的话)。我想我需要的是 OpenVPN 设置,所以我正在寻找有关如何:
- 安装和设置 OpenVPN 服务器
- 设置 OpenVPN 客户端 (NetworkManager)
这应该适用的 Ubuntu 版本是 10.10 和 11.04。
目标:当我的笔记本电脑连接到开放的热点/接入点时,我希望能够通过我的家用 PC 安全地使用互联网。
我知道我可以使用 SSH 隧道/SOCKS 代理,但我不想摆弄应用程序(让他们使用它,如果可能的话)。我想我需要的是 OpenVPN 设置,所以我正在寻找有关如何:
这应该适用的 Ubuntu 版本是 10.10 和 11.04。
几个月前我有一个确切的问题,但另外,如果可能的话,我想拥有一个 IPv6 连接。您可能对我关于 Serverfault 的问题感兴趣:
我的服务器上只有一个 NIC(“网络接口”)可供使用。在我的设置中,NetworkManager 是不够的,因为我需要运行自定义脚本来支持 IPv6。然而,为了简单起见,我将在这里使用 NetworkManager 并省略 IPv6 支持。
首先,只需对身份验证方法做出决定。我将使用类似于 SSL 的更安全的证书方法:在握手期间选择一个用于会话的公共秘密。其他方法是共享密钥;用户名和密码。
服务器
1. 准备
首先,安装 openvpn 服务器。这就像
sudo apt-get install openvpn
. 困难的部分是配置它。配置存在于/etc/openvpn
.2.配置认证
服务器需要证书来标识自己及其客户端。这些证书是从 CA(公共授权)检索的。证书和相关私钥的创建可以在任何机器上完成,不必在服务器上完成。如果你真的很偏执,你应该在没有连接到网络的机器上进行,并使用记忆棒来传输证书。
为服务器创建 CA 和证书
此步骤必须执行一次,除非您的 CA 的私钥被泄露。在这种情况下,可以创建将被服务器接受的有效证书,从而导致安全漏洞。
官方文档建议在
/etc/openvpn
. 我不喜欢以 root 身份运行所有内容,因此我会将其放在不同的目录中。创建管理目录并通过运行复制其中的文件:
vars
,例如设置,KEY_SIZE=2048
因为你是偏执狂。通过运行加载变量并创建密钥目录:
如果你得到一个错误
No ... openssl.cnf file could be found Further invocations will fail
,运行ln -s openssl-1.0.0.cnf openssl.cnf
,然后. vars
再次。如果这是您第一次使用此 CA,请准备密钥环境。如果要维护以前创建的 CA,请不要运行此命令。这样做需要您部署一个新的
ca.crt
../build-ca
通过执行创建 CA。您可以填写您想要的任何详细信息,但请注意,当客户端连接到服务器时,此信息将在日志文件中可见。这将创建文件ca.key
并ca.crt
在子文件夹中keys
。在任何情况下都对ca.key
文件保密。如果不这样做,任何拥有密钥的人都可以连接到您的服务器。./revoke-full server
. 否则你会得到一个数据库错误。通过运行以下命令为服务器创建证书:
当被要求输入密码时,请将其留空,除非您愿意在每次服务器启动时输入密码(不推荐)。确认签署证书并提交。目录中将出现两个新文件
keys
:server.key
和server.crt
。DH 并使用为 tls-auth 做准备
使用以下方法生成Diffie-Hellman参数:
根据硬化提示,使用
tls-auth
. 为此,使用以下命令生成共享密钥:生成的文件 (
ta.key
) 也必须分发给客户,但您不应将其公开。为客户创建证书
对于每个客户,应重复以下步骤:
输入您在其中创建 CA 和服务器证书的目录:
如果您因为已经创建 CA 而跳过了 CA 创建步骤,则需要先加载变量:
./revoke-full you
。否则你会得到一个数据库错误。创建客户端证书
you.key
及其对应的证书you.crt
:CommonName
应该是唯一的。如果您使用的是 KDE,请将密码留空,因为截至 10.10 尚不支持它。与服务器证书生成一样,确认签署证书并提交更改。3. 设置 OpenVPN 服务
默认情况下,OpenVPN 在接受连接时以 root 身份运行。如果可以从邪恶的 Internet 访问该服务,这不是一个好主意。
为 OpenVPN 创建一个专用用户,例如
openvpn
:将文件
server.key
、server.crt
和(或者如果您更改了密钥大小)从 keys 目录复制ca.crt
到. 400 的权限(所有者只读)就可以了。dh1024.pem
dh2048.pem
/etc/openvpn
也复制文件
ta.key
:创建文件
/etc/openvpn/server.conf
并将下一行放入其中:设置适当的权限,它不需要保密,但我不喜欢泄露配置细节,所以:
4.完成服务器
如果您在服务器上创建了证书,最好对其进行加密或将其移出服务器。无论如何,不要丢失
ca.key
andserver.key
。在第一种情况下,其他人将能够连接到您的服务器。在后者中,MITM是可能的。客户
除服务器IP地址外,服务器管理员还应交出以下文件:
ca.crt
:用于验证证书server.crt
:用于验证服务器并与之通信ta.key
:用于加强安全性you.crt
: 向服务器表明自己的身份you.key
:就像你的密码一样,文件权限应该是400(所有者只读)1.安装
安装 OpenVPN 和 NetworkManager 插件(适用于 KDE 和 Gnome):
network-manager-openvpn
位于 Universe 存储库中。2.配置
在控制面板中,使用以下详细信息:
ca.crt
you.crt
you.key
在高级:
指定密钥文件路径
ta.key
并将“密钥方向”设置为1
.如果您无法让 NetworkManager 工作或不想使用它,请将文件 (
ca.crt
, ...) 放入/etc/openvpn
并创建文件/etc/openvpn/client.conf
文件:如果您不想在启动时启用此 VPN,
/etc/default/openvpn
请通过删除以下行来编辑并取消注释#
:要启动此连接,请运行:
client
如果您的配置文件未命名,则应重命名client.conf
. 示例:如果您已将配置文件命名为safe.conf
,则需要运行sudo /etc/init.d/openvpn start safe
.要停止 OpenVPN,您必须运行:
您实际上不需要摆弄任何应用程序。这“就像 VPN 一样”。
首先安装
tsocks
包(临时袜子):然后编辑
/etc/tsocks.conf
输入现在,打开一个终端并输入(这会连接你):
运行(通过另一个终端或 ALT-F2):
现在,Firefox 将所有通信传输到您计算机上由 SSH 创建的 SOCKS 服务器。这进一步通过隧道传输到您的家用机器,然后进入网络。在您的家用机器上,您只需要一个 SSH 服务器。第一次之后,只需重复步骤 3 和 4。
它就像一个魅力!唉,铬不喜欢 tsocks,但是,嘿,Firefox 工作。
SSH 隧道解决方案比您想象的要容易。像 gSTM 这样的程序将使用 GUI 为您启动/停止隧道。然后只需打开网络代理并将其从直接互联网连接更改为手动代理配置,点击“应用系统范围”,您的所有应用程序都应该通过隧道发送它们的数据 - 无需单独摆弄每一个。