OpenVPN类别中的文章

  1. 在你的iPhone上使用OpenVPN和Linux安装VPN

    2018年6月18日星期一

    (2018年更新)这篇文章自2013年发表以来已进行了大幅更新。

    简介

    在本文中,我将向您展示如何设置一个基于linux的OpenVPN服务器。一旦这个服务器启动并运行,我将向您展示如何设置您的iOS设备,例如您的iPhone或iPad,以便它们可以连接到您的新VPN服务器。

    这项工作的目标是通过VPN连接封装所有的互联网流量,这样无论你在哪里,都没有人能监控你访问的网站和你做的事情。如果你必须通过不受信任的网络资源(如公共Wi-Fi)访问互联网,这是理想的。

    一些典型的场景是:

    • 你可以直接在基于linux的家用路由器上运行OpenVPN服务
    • 你在家用路由器后面的设备上使用端口转发运行OpenVPN服务(比如树莓派)
    • 在众多云服务提供商之一托管的VPS上运行OpenVPN服务

    您的iOS设备将运行OpenVPN连接这是一款可以在应用商店中找到的免费应用程序。

    截图

    其他平台的注意事项:虽然本教程的重点是iOS设备,但您新的基于openvpn的VPN服务器将支持任何客户端操作系统,可能是Windows、MacOS、Android或Linux。这些其他客户机的配置超出了本文的范围。

    本教程是基于OpenVPN这是一个开源产品。OpenVPN背后的公司也提供VPN服务按月收费。如果你发现设置自己的服务器太麻烦,你可以看看他们的服务.请注意,我从来没有使用过这项服务,不能担保它。

    这是一个简短的概述,为了有一个完整的功能设置,你需要采取的所有步骤,包括配置客户端:

    1. 安装Linux服务器(超出范围)
    2. 安装OpenVPN软件
    3. 设置证书颁发机构
    4. 生成服务器证书
    5. 配置OpenVPN服务端
    6. 在Linux服务器上配置防火墙
    7. 为每个客户端(iPhone、iPad等)生成证书
    8. 将客户端配置复制到您的设备
    9. 测试客户端

    工作原理

    OpenVPN是基于ssl的VPN解决方案。基于ssl的vpn非常可靠,因为如果您正确设置它,只要TCP-port 443可访问,您就永远不会被任何防火墙阻止。默认情况下,OpenVPN使用UDP作为端口1194的传输,但是您可以切换到TCP-port 443,以增加您的流量不会被阻塞的机会,但代价是稍微多占用一点带宽。

    身份验证

    身份验证基于公钥/私钥加密。OpenVPN服务器类似于HTTPS服务器。最大的区别是你的设备不使用用户名/密码组合进行身份验证,而是使用证书。此证书存储在客户端配置文件中。

    因此,在配置和启动OpenVPN服务之前,您需要设置一个证书颁发机构(CA)。通过CA,您可以为OpenVPN服务器创建服务器证书,然后生成所有客户端证书。

    OpenVPN安装

    默认情况下,OpenVPN可以在大多数常见的Linux发行版上使用。安装openvpn只需要apt-get安装任何Debian或Ubuntu版本的openvpn。

    或者看一看在这里

    我从来没有试过,但是你可以试着看一下OpenVPN安装脚本

    这个脚本似乎自动化了很多步骤,比如防火墙配置、证书生成等。

    提示

    这超出了本教程的范围,但是您应该确保保留您的OpenVPN软件最新的,以防将来发现OpenVPN存在安全漏洞。

    安全

    我在一个较旧的系统上创建本教程,其中证书颁发机构和OpenVPN服务器本身的默认配置设置都不太安全。我在本教程中使用的设置是基于中的步骤这个博客

    明显的改进:

    • AES256加密
    • 2048位密钥大于1024位密钥
    • SHA256 / sha1/md5

    性能

    我做了一些性能测试,每个iOS客户端大约有40-50 mb。我认为瓶颈在于我的旧HP Microserver N40L,它的CPU相对较弱。

    交通影响

    如果您想限制允许客户端使用多少带宽,我建议使用本教程.我已经试过了,效果很好。

    创建证书颁发机构。

    对于unbuntu:安装“easy-rsa”软件包,并使用“make-cadir”命令代替下面的安装说明。

    我假设您将在/etc/openvpn.中设置您的OpenVPN配置在设置服务器配置之前,您需要创建一个证书颁发机构。我使用/etc/openvpn/easy-rsa文件夹作为CA的位置。

    mkdir /etc/openvpn/easy-rsa

    我们首先将所有这些文件复制到这个新目录:

    cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0* /etc/openvpn/easy-rsa

    请注意,根据您的Linux风格,这些文件可能在其他路径中找到。

    接下来,对目标目录进行cd。

    cd /etc/openvpn/easy-rsa

    现在,用你最喜欢的文本编辑器打开“vars”文件。下面的说明直接来自OpenVPN howto

    您应该将所有值更改为适用于您的值(显然)。

    export KEY_COUNTRY="US" export KEY_PROVINCE="California" export KEY_CITY="San francisco " export KEY_ORG="My Company" export KEY_EMAIL="my@mail.com" export KEY_CN=server export KEY_NAME=server export KEY_OU=home

    修改KEY_SIZE参数:

    出口KEY_SIZE = 2048

    您希望您的证书有效期是多久(10年?)

    export CA_EXPIRE=3650 export KEY_EXPIRE=3650

    然后我不得不复制openssl-1.0.0.cnf到openssl.cnf,因为“vars”脚本抱怨它找不到后一个文件。

    Cp openssl-1.0.0.cnf openssl.cnf

    请注意我在一个较旧的Linux安装上执行了这些步骤。我不得不编辑这个文件/etc/openvpn/easy-rsa/pkitool并改变了所有的发生“sha1”“sha256”

    现在我们“源”var并运行两个额外的命令来实际生成证书颁发机构。注意./vars前面的点。

    . ./vars ./clean-all ./build-ca ./build-dh .

    您必须确认这些值或在必要时更改它们。

    现在我们有了一个证书颁发机构,可以创建由该颁发机构签名的新证书。

    警告:对所有的关键文件要格外小心,它们应该保密。

    我建议执行以下命令:

    chown -R root:root /etc/openvpn chmod -R 700 /etc/openvpn . chown -R root

    缺省情况下,OpenVPN以root用户运行。使用这些命令,只有根用户才能访问密钥。如果不以根用户身份运行OpenVPN,则必须为第一个命令选择适当的用户。另请参阅这篇文章

    创建服务器证书

    我们创建服务器证书:

    / build-key-server服务器。

    这是由你来提出一个替代“服务器”。这是存储密钥文件和证书的文件名。

    生成的所有文件都可以在“/etc/openvpn/easy-rsa/keys”目录下找到。这只是一个包含服务器和客户端密钥的平面文件夹。

    创建可选TLS-AUTH证书

    这一步是可选的,但它不需要花费太多精力,而且它似乎添加了一个额外的安全层,而且没有显著的成本。在此步骤中,我们创建一个附加的密钥,该密钥与服务器和客户端共享。

    以下步骤是基于这篇文章(使用-tls-auth)。

    CD /etc/openvpn/easy-rsa/keys openvpn——genkey——secret ta.key

    当我们要创建服务器配置时,我们将引用这个密钥文件。

    创建客户端证书

    现在我们有了一个服务器证书,我们将为iPhone(或任何其他iOS设备)创建一个证书。

    iphone。/建立关键

    使用默认值回答问题。别忘了回答这些问题:

    在证书上签字?[y/n]:y 1 / 1的证书请求已认证,提交?[y / n] y

    现在,我们已经准备好了开始创建OpenVPN配置。我们必须为服务器和客户机创建一个配置。这些配置基于可以在/usr/share/doc/openvpn/examples/中找到的示例。

    服务器配置示例

    这是我的服务器配置,是可操作的。保存在“/etc/openvpn/openvpn.conf”目录下

    dev tun2 tls-server cipher AES-256-CBC auth SHA256 remote-cert-tls client dh easy-rsa/keys/dh2048pem ca easy-rsa/keys/ca。CRT cert easy-rsa/keys/server。CRT key easy-rsa/keys/server。密钥tls-auth easy-rsa/keys/ta。key server 10.0.0.0 255.255.255.0 log/ var/log/openvpn.log script-security 2 route-up "/sbin/ifconfig tun2 up" port 443 proto tcp-server push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8"

    我相信您应该能够按原样使用这个配置。根据您自己网络中的本地ip地址,您可能必须更改服务器部分。

    我使用TCP-port 443,因为这个目标端口几乎从未被阻塞,因为阻塞这个端口会破坏大多数互联网连接。(缺点是我不能再在这个ip地址上托管任何安全的网站)。

    OpenVPN服务将在“服务器”部分配置的地址范围内为您的客户端提供一个ip地址。

    如果需要更改任何参数,然后启动或重新启动OpenVPN服务:

    /etc/init.d / openvpn重启

    在“/var/log/openvpn.log”中确认服务器运行正常

    如果你想使用VPN来浏览互联网,我们仍然需要配置一个基本的防火墙设置。

    我假设您已经运行了某种基于iptables的防火墙。配置Linux防火墙超出了本文的范围。我将只讨论为使OpenVPN服务正常运行可能需要进行的更改。

    您需要在连接到internet的接口上接受到TCP端口443的流量。

    iptables -A INPUT -p tcp -m tcp——dport 443 -j ACCEPT

    如果您的OpenVPN服务器位于路由器/防火墙之后,则需要在该路由器/防火墙上配置端口转发。如何做到这一点超出了本文的范围,因为不同的设备有不同的方法。

    假设您将-例如-使用10.0.0.0/24网络用于VPN客户端(例如您的iPhone),您还必须创建一个NAT规则,以便VPN客户端可以使用Linux服务器的ip地址访问Internet。

    iptables -t nat -A POSTROUTING -s "10.0.0.0/24" -o "eth0" -j MASQUERADE

    请注意,必须将eth0更改为连接到internet的适当接口的名称。请根据实际情况修改ip地址范围。它不应该与您现有的网络冲突。

    iptables -A FORWARD -p tcp -s 10.0.0.0/24 -d 0.0.0.0/0 -j ACCEPT

    请注意,我没有测试这些规则,因为我有不同的设置。但这就足够了。并确保像这样启用转发:

    Echo 1 > /proc/sys/net/ipv4/ip_forward

    客户端配置示例

    大多数OpenVPN客户端可以自动导入文件扩展名为.ovpn的文件。典型的配置文件类似于'iphone.ovpn'。

    警告:.ovpn文件将包含用于iPhone/iPad对OpenVPN服务器进行身份验证的证书。在存放这个文件的地方要非常小心。任何能够获得该文件副本的人都将能够连接到您的VPN服务器。

    这是配置文件示例,但我们不打算手工创建它,这太麻烦了。

    从这个例子中,你会注意到.ovpn文件包含客户端配置和所有必需的证书:

    1. CA根证书
    2. 用于验证服务器的服务器证书
    3. 客户端私有证书
    4. TLS-AUTH证书(可选的额外安全措施)

    使用脚本创建客户端配置文件(.ovpn)

    您可以手动创建客户端配置文件,但这需要大量的工作。因为您需要将所有证书附加到一个文件中,该文件还包含配置设置。

    因此,我们将使用一个脚本来设置客户机配置。

    首先,我们要创建一个文件夹,我们的客户端配置文件将存储在其中。

    Mkdir /etc/openvpn/clientconfig chmod 700 /etc/openvpn/clientconfig . Mkdir /etc/openvpn/clientconfig

    现在我们将下载脚本和附带的配置模板文件。注意,链接可以自动换行。

    CD /etc/openvpn wget https://raw.githubusercontent.com/欧宝体育登陆首页官网下载louwrentius/openvpntutorial/master/create-client-config.sh wget https://raw.githubusercontent.com/louwrentius/openvpntutorial/master/client-config-template chmod +x create-client-config.sh

    请注意,在生成配置文件之前,您首先需要为您的设备创建证书。如果需要,请回到这一步。

    还要注意您为设备使用的名称。您可以查看/etc/openvpn/easy-rsa/keys以查看设备是如何调用的。

    现在,编辑这个client-config-template并在需要的地方更改适当的值。你可能只需要改变第一行:

    remote <您的服务器DNS地址或IP地址>

    现在您可以运行脚本并为您的设备生成配置文件。

    运行此脚本时,将生成一个配置文件,并将其放置在/etc/openvpn/clientconfig文件夹中。

    该脚本只是将客户端配置模板和所有必需的证书放在一个文件中。下面是它的用法:

    iPhone。/ create-client-config.sh

    运行脚本时,你会注意到一些输出:

    user@server:/etc/openvpn# ./create-client-config.sh iphone Client's cert found: /etc/openvpn/easy-rsa/keys/iphone客户端私钥found: /etc/openvpn/easy-rsa/keys/iphone.key CA public key: /etc/openvpn/easy-rsa/keys/ca. key/etc/openvpn/easy-rsa/keys/ta. crt tls-auth Private Key found: /etc/openvpn/easy-rsa/keys/ta. crt主要完成了!/etc/openvpn/clientconfig / iphone。ovpn创建成功。

    你现在应该会找到一个名为“iphone”的文件。/etc/openvpn/clientconfig目录下的Ovpn。

    我们快到了。我们只需要把这个文件复制到你的iOS设备上。

    你有三个选择:

    1. 使用iCloud Drive
    2. 使用iTunes
    3. 使用电子邮件(显然不安全,没有讨论过)

    用iCloud Drive设置你的iPhone或iPad

    1. 首先安装OpenVPN连接申请,如果你还没有这样做。
    2. 将.ovpn文件从您的OpenVPN服务器复制到您的iCloud Drive。
    3. 打开你的设备,使用“文件”浏览器在你的iCloud驱动器中导航到你刚刚复制的。ovpn文件。
    4. 点击文件下载并打开。
    5. 现在轮到棘手的部分了:按下share符号

    步骤1

    在iOS设备上使用OpenVPN应用程序打开文件:

    步骤2

    步骤3

    当你遇到“OpenVPN想要添加VPN配置”的问题时,选择“允许”。

    继续“测试您的iOS设备”步骤。

    如果OpenVPN Connect客户端没有导入该文件,请将应用程序从设备上移除,然后重新安装。(这是我必须在iPad上做的事情)。

    在iPhone或iPad上安装iTunes

    如果您使用iCloud Drive将.ovpn配置文件复制到您的设备,则可以跳过此步骤。

    您需要在您的iOS设备上获取以下文件:

    iphone.ovpn

    将此文件从OpenVPN服务器复制到运行iTunes的计算机。然后用数据线将你的设备连接到iTunes上。

    1. 打开iTunes
    2. 在右上方选择您的设备
    3. 进入应用程序选项卡
    4. 滚动到文件共享部分
    5. 选择OpenVPN应用程序
    6. 添加iphone.ovpn
    7. 同步设备

    测试你的iOS设备

    打开OpenVPN客户端。您将看到一条通知,提示已导入新配置,您需要接受该配置。

    由于它可能不能立即工作,因此需要监视服务器上的/var/log/openvpn.log以观察任何错误。

    现在试着去联系和享受。

    结论

    您应该能够一直启用VPN,因为电池使用开销应该是最小的。如果您在家中无法连接到您的VPN,则需要检查您的防火墙设置。

    更新20130123与keepalive选项。更新20130801与额外的服务器推送选项流量重定向和DNS配置更新20180618作为原始过时文章的实质性重写。

第1页/ 1

Baidu
map