目标:当我的笔记本电脑连接到开放热点/接入点时,我希望能够通过家用电脑安全地使用互联网。
我做我知道我可以使用 SSH 隧道/SOCKS 代理,但我不想摆弄应用程序(如果可能的话,让它们使用它)。我想我需要的是 OpenVPN 设置,所以我正在寻找有关如何执行以下操作的详细指南:
- 安装并设置 OpenVPN 服务器
- 设置 OpenVPN 客户端(NetworkManager)
适用于此的 Ubuntu 版本是 10.10 和 11.04。
答案1
几个月前我也遇到过同样的问题,但另外,如果可能的话,我想建立 IPv6 连接。您可能对我在 Serverfault 上的问题感兴趣:
我的服务器上只有一个 NIC(“网络接口”)可供使用。在我的设置中,NetworkManager 不够用,因为我需要运行自定义脚本来支持 IPv6。但为简单起见,我将在这里使用 NetworkManager 并省略 IPv6 支持。
首先,只需决定身份验证方法。我将使用更安全的证书方法,其工作原理类似于 SSL:在握手期间,将选择一个将用于会话的公共密钥。其他方法是共享密钥;用户名和密码。
服务器
1. 准备
首先,安装 openvpn 服务器。这很简单sudo apt-get install openvpn
。困难的部分是配置它。配置位于/etc/openvpn
。
2.配置身份验证
服务器需要证书来识别自身及其客户端。这些证书是从 CA(通用授权机构)获取的。证书和相关私钥的创建可以在任何机器上完成,不必在服务器上完成。如果您真的很谨慎,您应该在未连接到网络的机器上执行此操作,并使用记忆棒传输证书。
为服务器创建 CA 和证书
此步骤必须执行一次,除非您的 CA 私钥被泄露。在这种情况下,可以创建有效的证书,这些证书将被服务器接受,从而导致安全漏洞。
这官方文档建议在 中进行管理/etc/openvpn
。我不太喜欢以 root 身份运行所有操作,因此我将把它放在不同的目录中。
创建管理目录并通过运行以下命令复制其中的文件:
mkdir ~/openvpn-admin cd ~/openvpn-admin cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa cd easy-rsa
- 根据需要编辑默认值
vars
,例如,KEY_SIZE=2048
因为您偏执而设置。 通过运行以下命令加载变量并创建密钥目录:
. vars
如果出现错误
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
。./clean-all
- 通过执行 创建 CA。
./build-ca
您可以填写任何您想要的详细信息,但请注意,当客户端连接到服务器时,这些信息将在日志文件中可见。这将在子文件夹中创建文件ca.key
和。将文件保密ca.crt
keys
ca.key
在任何情况下。如果不这样做,任何拥有密钥的人都可以连接到您的服务器。 - 如果您之前的证书丢失或过期,您需要先使用 撤销旧证书
./revoke-full server
。否则您将收到数据库错误。 通过运行以下命令为服务器创建证书:
./build-key-server server
当要求输入密码时,请将其留空,除非您愿意在每次服务器启动时输入密码(不推荐)。确认签署证书并提交。目录中将出现两个新文件
keys
:server.key
和server.crt
。
DH 并使用准备进行 tls-auth
产生迪菲一赫尔曼参数使用:
./build-dh
每硬化技巧,使用tls-auth
。为此,使用以下命令生成共享密钥:
openvpn --genkey --secret ta.key
生成的文件(ta.key
)也必须分发给客户,但您不应将其公开。
为客户端创建证书
对于每个客户端,应重复以下步骤:
输入您创建 CA 和服务器证书的目录:
cd ~/openvpn-admin/easy-rsa
如果您已经创建了 CA 而跳过了创建 CA 的步骤,那么您需要先加载变量:
. vars
- 如果您因为旧证书丢失或过期,您需要先使用 撤销旧版本
./revoke-full you
。否则会出现数据库错误。 创建客户端证书
you.key
及其对应的证书you.crt
:./build-key you
应该
CommonName
是唯一的。如果您使用的是 KDE,请将密码留空,因为自 10.10 起它还不受支持。与服务器证书生成一样,确认签署证书并提交更改。
3. 设置 OpenVPN 服务
默认情况下,OpenVPN 在接受连接时以 root 身份运行。如果该服务可以从恶意互联网访问,那么这不是一个好主意。
为 OpenVPN 创建专用用户,例如
openvpn
:sudo useradd openvpn
将文件
server.key
、server.crt
和ca.crt
(dh1024.pem
或者dh2048.pem
如果您已更改密钥大小)从密钥目录复制到/etc/openvpn
。权限为 400(所有者只读)即可。sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
复制文件
ta.key
:sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn sudo chmod 400 /etc/openvpn/ta.key
创建文件
/etc/openvpn/server.conf
并将下几行放入其中:proto udp dev tap ca ca.crt cert server.crt key server.key dh dh1024.pem server 10.8.0.0 255.255.255.0 push "redirect-gateway def1" ifconfig-pool-persist ipp.txt keepalive 10 120 tls-auth ta.key 0 # Compress data to save bandwidth comp-lzo user openvpn group openvpn persist-key persist-tun # Logs are useful for debugging log-append openvpn-log verb 3 mute 10
对其设置适当的权限,它不需要保密,但我不希望泄露配置详细信息,因此:
sudo chmod 640 /etc/openvpn/server.conf
4. 完成服务器
如果您已在服务器上创建证书,最好对其进行加密或将其从服务器上移出。无论如何,不要丢失和ca.key
。server.key
在第一种情况下,其他人将能够连接到您的服务器。在后一种情况下,中间人是可能的。
客户
除了服务器IP地址外,服务器管理员还应交出以下文件:
ca.crt
:用于验证证书server.crt
:用于验证服务器并与其通信ta.key
:加强安全性you.crt
:向服务器确认您的身份you.key
:就像您的密码一样,文件权限应为 400(所有者只读)
1.安装
安装 OpenVPN 和 NetworkManager 插件(适用于 KDE 和 Gnome):
sudo apt-get install openvpn network-manager-openvpn
network-manager-openvpn
位于宇宙存储库中。
2.配置
在控制面板中,使用以下详细信息:
- 网关:服务器IP地址
- 类型:“证书 (TLS)”(Gnome)或“X.509 证书”(KDE)
- CA 证书:路径
ca.crt
- 用户证书:路径
you.crt
- 私钥:路径
you.key
在先进的:
- 网关端口:自动(1194)(无需更改)
- 使用 LZO 数据压缩:已启用
- 使用 TCP 连接:已禁用
- 使用 TAP 设备:已启用
- 密码:默认
- HMAC 认证:默认
- 使用 TLS 身份验证:启用
指定密钥文件路径ta.key
并将“密钥方向”设置为1
。 - (todo-检查一下)服务器推送默认网关,因此所有流量都通过 VPN 连接。上次我检查时,network-manager-openvpn 插件没有执行此操作。
如果您无法使 NetworkManager 工作或者不想使用它,请放入文件(ca.crt
,...)/etc/openvpn
并创建文件/etc/openvpn/client.conf
:
client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20
如果您不想在启动时启用此 VPN,请编辑/etc/default/openvpn
并取消注释下一行,删除以下内容#
:
#AUTOSTART="none"
要启动此连接,请运行:
sudo /etc/init.d/openvpn start client
client
如果您的配置文件未命名为 ,则应重命名client.conf
。例如:如果您已将配置文件命名为safe.conf
,则需要运行sudo /etc/init.d/openvpn start safe
。
要停止 OpenVPN,您必须运行:
sudo /etc/init.d/openvpn stop
答案2
实际上,您无需摆弄任何应用程序。它的工作原理“就像 VPN 一样”。
首先安装
tsocks
包(临时袜子):sudo apt-get install tsocks
然后编辑
/etc/tsocks.conf
并输入server = 127.0.0.1 server_port = 3333
现在,打开一个终端并输入(这将连接您):
ssh -ND 3333 ssh.url.to.your.home.machine
运行(通过另一个终端或 ALT-F2):
tsocks firefox
现在,Firefox 将所有通信传输到您计算机上由 SSH 创建的 SOCKS 服务器。然后,它会进一步通过隧道传输到您的家用机器,再从那里进入网络。您家用机器上只需要一个 SSH 服务器。第一次之后,只需重复步骤 3 和 4。
它运行起来非常好!可惜的是,Chromium 不喜欢 tsocks,但是 Firefox 却能用。
答案3
SSH 隧道解决方案比您想象的要简单。像 gSTM 这样的程序会使用 GUI 为您启动/停止隧道。然后只需打开网络代理并将其从直接互联网连接更改为手动代理配置,点击“全系统应用”,您的所有应用程序都应将其数据发送到隧道中 - 无需单独摆弄每个应用程序。