AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 35647
Accepted
htorque
htorque
Asked: 2011-04-18 12:06:33 +0800 CST2011-04-18 12:06:33 +0800 CST 2011-04-18 12:06:33 +0800 CST

如何设置 OpenVPN,以便我可以从不安全的热点安全地使用互联网?

  • 772

目标:当我的笔记本电脑连接到开放的热点/接入点时,我希望能够通过我的家用 PC 安全地使用互联网。

我知道我可以使用 SSH 隧道/SOCKS 代理,但我不想摆弄应用程序(让他们使用它,如果可能的话)。我想我需要的是 OpenVPN 设置,所以我正在寻找有关如何:

  1. 安装和设置 OpenVPN 服务器
  2. 设置 OpenVPN 客户端 (NetworkManager)

这应该适用的 Ubuntu 版本是 10.10 和 11.04。

networking
  • 3 3 个回答
  • 59523 Views

3 个回答

  • Voted
  1. Best Answer
    Lekensteyn
    2011-04-18T13:53:19+08:002011-04-18T13:53:19+08:00

    几个月前我有一个确切的问题,但另外,如果可能的话,我想拥有一个 IPv6 连接。您可能对我关于 Serverfault 的问题感兴趣:

    • 如何配置 OpenVPN 以使用一个 NIC 访问 Internet?
    • 如何使用 Tap 设备使用 IPv4 和 IPv6 设置 OpenVPN?

    我的服务器上只有一个 NIC(“网络接口”)可供使用。在我的设置中,NetworkManager 是不够的,因为我需要运行自定义脚本来支持 IPv6。然而,为了简单起见,我将在这里使用 NetworkManager 并省略 IPv6 支持。

    首先,只需对身份验证方法做出决定。我将使用类似于 SSL 的更安全的证书方法:在握手期间选择一个用于会话的公共秘密。其他方法是共享密钥;用户名和密码。

    服务器

    1. 准备

    首先,安装 openvpn 服务器。这就像sudo apt-get install openvpn. 困难的部分是配置它。配置存在于/etc/openvpn.

    2.配置认证

    服务器需要证书来标识自己及其客户端。这些证书是从 CA(公共授权)检索的。证书和相关私钥的创建可以在任何机器上完成,不必在服务器上完成。如果你真的很偏执,你应该在没有连接到网络的机器上进行,并使用记忆棒来传输证书。

    为服务器创建 CA 和证书

    此步骤必须执行一次,除非您的 CA 的私钥被泄露。在这种情况下,可以创建将被服务器接受的有效证书,从而导致安全漏洞。

    官方文档建议在/etc/openvpn. 我不喜欢以 root 身份运行所有内容,因此我会将其放在不同的目录中。

    1. 创建管理目录并通过运行复制其中的文件:

      mkdir ~/openvpn-admin
      cd ~/openvpn-admin
      cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
      cd easy-rsa
      
    2. 根据需要编辑默认值vars,例如设置,KEY_SIZE=2048因为你是偏执狂。
    3. 通过运行加载变量并创建密钥目录:

      . vars
      
    4. 如果你得到一个错误No ... openssl.cnf file could be found Further invocations will fail,运行ln -s openssl-1.0.0.cnf openssl.cnf,然后. vars再次。

    5. 如果这是您第一次使用此 CA,请准备密钥环境。如果要维护以前创建的 CA,请不要运行此命令。这样做需要您部署一个新的ca.crt.

      ./clean-all
      
    6. ./build-ca通过执行创建 CA。您可以填写您想要的任何详细信息,但请注意,当客户端连接到服务器时,此信息将在日志文件中可见。这将创建文件ca.key并ca.crt在子文件夹中keys。在任何情况下都对ca.key文件保密。如果不这样做,任何拥有密钥的人都可以连接到您的服务器。
    7. 如果您以前的证书丢失或过期,您需要先用./revoke-full server. 否则你会得到一个数据库错误。
    8. 通过运行以下命令为服务器创建证书:

      ./build-key-server server
      

      当被要求输入密码时,请将其留空,除非您愿意在每次服务器启动时输入密码(不推荐)。确认签署证书并提交。目录中将出现两个新文件keys:server.key和server.crt。

    DH 并使用为 tls-auth 做准备

    使用以下方法生成Diffie-Hellman参数:

    ./build-dh
    

    根据硬化提示,使用tls-auth. 为此,使用以下命令生成共享密钥:

    openvpn --genkey --secret ta.key
    

    生成的文件 ( ta.key) 也必须分发给客户,但您不应将其公开。

    为客户创建证书

    对于每个客户,应重复以下步骤:

    1. 输入您在其中创建 CA 和服务器证书的目录:

      cd ~/openvpn-admin/easy-rsa
      
    2. 如果您因为已经创建 CA 而跳过了 CA 创建步骤,则需要先加载变量:

      . vars
      
    3. 如果您因为旧证书丢失或过期而创建新证书,则需要先使用 撤销旧证书./revoke-full you。否则你会得到一个数据库错误。
    4. 创建客户端证书you.key及其对应的证书you.crt:

      ./build-key you
      

      CommonName应该是唯一的。如果您使用的是 KDE,请将密码留空,因为截至 10.10 尚不支持它。与服务器证书生成一样,确认签署证书并提交更改。

    3. 设置 OpenVPN 服务

    默认情况下,OpenVPN 在接受连接时以 root 身份运行。如果可以从邪恶的 Internet 访问该服务,这不是一个好主意。

    1. 为 OpenVPN 创建一个专用用户,例如openvpn:

      sudo useradd openvpn
      
    2. 将文件server.key、server.crt和(或者如果您更改了密钥大小)从 keys 目录复制ca.crt到. 400 的权限(所有者只读)就可以了。dh1024.pemdh2048.pem/etc/openvpn

      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}
      
    3. 也复制文件ta.key:

      sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
      sudo chmod 400 /etc/openvpn/ta.key
      
    4. 创建文件/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
      
    5. 设置适当的权限,它不需要保密,但我不喜欢泄露配置细节,所以:

      sudo chmod 640 /etc/openvpn/server.conf
      

    4.完成服务器

    如果您在服务器上创建了证书,最好对其进行加密或将其移出服务器。无论如何,不​​要丢失ca.keyand server.key。在第一种情况下,其他人将能够连接到您的服务器。在后者中,MITM是可能的。

    客户

    除服务器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位于 Universe 存储库中。

    2.配置

    在控制面板中,使用以下详细信息:

    • 网关:服务器IP地址
    • 类型:“证书(TLS)”(Gnome)或“X.509 证书”(KDE)
    • CA 证书:路径ca.crt
    • 用户证书:路径you.crt
    • 私钥:路径you.key

    在高级:

    • 网关端口:自动(1194)(无需更改)
    • 使用 LZO 数据压缩:启用
    • 使用 TCP 连接:禁用
    • 使用 TAP 设备:启用
    • 密码:默认
    • HMAC认证:默认
    • 使用 TLS-authentication: enabled
      指定密钥文件路径ta.key并将“密钥方向”设置为1.
    • (待办事项 - 检查出来)服务器推送默认网关,因此所有流量都通过 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
    
    • 40
  2. MarkovCh1
    2011-04-18T15:16:11+08:002011-04-18T15:16:11+08:00

    您实际上不需要摆弄任何应用程序。这“就像 VPN 一样”。

    1. 首先安装tsocks包(临时袜子):

      sudo apt-get install tsocks
      
    2. 然后编辑/etc/tsocks.conf输入

      server = 127.0.0.1
      server_port = 3333
      
    3. 现在,打开一个终端并输入(这会连接你):

      ssh -ND 3333 ssh.url.to.your.home.machine
      
    4. 运行(通过另一个终端或 ALT-F2):

      tsocks firefox
      

    现在,Firefox 将所有通信传输到您计算机上由 SSH 创建的 SOCKS 服务器。这进一步通过隧道传输到您的家用机器,然后进入网络。在您的家用机器上,您只需要一个 SSH 服务器。第一次之后,只需重复步骤 3 和 4。

    它就像一个魅力!唉,铬不喜欢 tsocks,但是,嘿,Firefox 工作。

    • 8
  3. Felix
    2011-04-18T14:37:36+08:002011-04-18T14:37:36+08:00

    SSH 隧道解决方案比您想象的要容易。像 gSTM 这样的程序将使用 GUI 为您启动/停止隧道。然后只需打开网络代理并将其从直接互联网连接更改为手动代理配置,点击“应用系统范围”,您的所有应用程序都应该通过隧道发送它们的数据 - 无需单独摆弄每一个。

    • 1

相关问题

  • 如何设置 VLAN 转发?

  • 如何将主机 Ubuntu 上的 VPN (tun0) 网络适配器映射到 VirtualBox 来宾 Windows?

  • 如何限制下载/上传带宽?

  • 如何通过 Windows 网络共享文件?

  • 面板小程序以文本形式显示当前网络流量?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    我需要什么命令来解压缩/提取 .tar.gz 文件?

    • 8 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Martin Hope
    EmmyS 我需要什么命令来解压缩/提取 .tar.gz 文件? 2011-02-09 14:50:41 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve