如何在Ubuntu 16.04上配置OpenVPN
继续系列VPN文章,我们现在在Ubuntu 16.04服务器上安装OpenVPN。
OpenVPN很好地了解来自同名的VPN软件。
配置比其他VPN软件更难,因此我们将专注于服务器端配置,并在本文中制作OVPN文件。
本教程旨在以非root用户身份运行。
如果我们以root身份登录,请首先从添加非root用户开始。
adduser newuser
然后我们为他提供sudo权限并作为用户登录
usermod -aG sudo newuser su newuser
如果我们已有非root用户,我们可以跳过这些步骤,并且很可能我们。
现在以新用户或者任何其他非root用户身份登录,我们将安装OpenVPN
sudo apt-get install openvpn easy-rsa
服务器和客户端证书
首先,我们需要为证书颁发机构制作目录,并编辑vars文件是
make-cadir ~/openvpn-ca cd ~/openvpn-ca nano vars
找到它们中有导出key_的行,并使它们类似
export KEY_COUNTRY="US" export KEY_PROVINCE="New York State" export KEY_CITY="New York City" export KEY_ORG="theitroad" export KEY_EMAIL="[email protected]" export KEY_OU="LinuxGeeks"
还有一个名为key_name在同一文件中的行,所以我们将刚刚放在那里作为名称
export KEY_NAME="server"
保存vars文件后,我们输入的下一件事是:
source vars
这应该为我们提供关于./clean-all命令的说明。
因此,让我们键入它以确定我们正在运行干净的环境。
./clean-all
现在我们搬到了证书创建部分:
./build-ca
它将提示我们一些问题,但由于我们编辑了Vars,新的默认值应该是可以的,这样我们就可以按所有计数器按Enter键。
./build-key-server server
再次进入,但这时间并非所有计数。
当它要求我们放置密码时,请勿将其放置,并在结束时进行Pres y创建证书。
接下来是Diffie Hellman:
./build-dh
它需要一些时间,所以耐心等待。
接下来我们需要TA.KEY来提高服务器的安全性。
openvpn --genkey --secret keys/ta.key
然后,我们将所有相关文件复制到/etc/OpenVPN目录,因为OpenVPN仅从那里读取。
cd ~/openvpn-ca/keys sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
我们完成了服务器证书,因此我们现在为Client100创建证书。
cd ~/openvpn-ca source vars ./build-key client100
源默认默认值再次正常,因此只需按ENTER和Y结束即可。
服务器配置
对于起始点,我们将使用以下命令复制示例配置:
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
接下来我们需要编辑Server.conf以使我们的服务器可行。
我们可以使用任何编辑器,但我们现在将使用sed命令
sudo sed -i 's/;push "redirect-gateway def1 bypass-dhcp"/push "redirect-gateway def1 bypass-dhcp"/g' /etc/openvpn/server.conf sudo sed -i 's/;push "dhcp-option DNS 208.67.222.222"/push "dhcp-option DNS 208.67.222.222"/g' /etc/openvpn/server.conf sudo sed -i 's/;push "dhcp-option DNS 208.67.220.220"/push "dhcp-option DNS 208.67.220.220"/g' /etc/openvpn/server.conf sudo sed -i 's/;user nobody/user nobody/g' /etc/openvpn/server.conf sudo sed -i 's/;group nogroup/group nogroup/g' /etc/openvpn/server.conf sudo sed -i 's/;log-append/log-append/g' /etc/openvpn/server.conf
我们在这里做了什么:我们将所有TRAFIC设置为OpenVPN,我们将组和用户设置为Nogroup和Nobor,我们将日志设置为转到/etc/openvpn/openvpn.log。
在此之后,我们需要一个关于ta.key的更改:
sudo nano /etc/openvpn/server.conf
并找到这条线
tls-auth ta.key 0 # This file is secret key-direction 0
这是关于它的server.conf,接下来我们需要为我们的Ubuntu服务器启用数据包转发
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf sudo sysctl -p
UFW规则还需要更改以允许伪装,因此在开始之前添加此选项之前过滤部分
sudo nano /etc/ufw/before.rules
# START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES
请注意,eth0部分我们最有可能更改以反映互联网的网络接口的实名,因此我突出显示。
接下来,我们在UFW中启用转发,就像我们在Sysctl一样:
sudo sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/g' /etc/default/ufw
我们配置防火墙
sudo ufw allow 1194/udp sudo ufw disable sudo ufw enable
sudo systemctl start openvpn@server sudo systemctl status -l openvpn
如果一切顺利,启用启动启动OpenVPN
sudo systemctl enable openvpn@server
客户端配置
使用客户端配置部分,我们使用我们已经进行的证书,例如Client100。
我们还需要客户端配置文件
mkdir -p ~/client-configs/files chmod 700 ~/client-configs/files cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
我们复制的文件是基本设置,因此需要进行编辑。
nano ~/client-configs/base.conf
然后找到一条说遥控的行。
将其更改为fqdn的服务器IP地址。
remote your.serv.ipor.fqdn 1194
保存,作为编辑的其余部分,我们将与sed和echo命令一起做:
sudo sed -i 's/;user nobody/user nobody/g' ~/client-configs/base.conf sudo sed -i 's/;group nogroup/group nogroup/g' ~/client-configs/base.conf sudo sed -i 's/ca ca.crt/#ca ca.crt/g' ~/client-configs/base.conf sudo sed -i 's/cert client.crt/#cert client.crt/g' ~/client-configs/base.conf sudo sed -i 's/key client.key/#key client.key/g' ~/client-configs/base.conf sudo echo key-direction 1 >> ~/client-configs/base.conf
那么我们在这里做了什么?
我们首先将用户和组设置为Nobody和Nogroup。
然后我们注释了证书路径,因为我们将在.ovpn文件中集成内联证书。
然后我们添加了键方向1参数。
用于制作客户端配置的脚本
为了将客户端配置,键和证书嵌入单个.ovpn文件中,以便更容易传输到远程客户端,我们将使用脚本使用。
让我们做
nano ~/client-configs/make_config.sh
然后在那里粘贴这个帕特巴。
保存此后,我们需要添加可执行位,因此运行此命令:
chmod +x ~/client-configs/make_config.sh
然后我们可以轻松创建配置文件
cd ~/client-configs ./make_config.sh client100 ls ~/client-configs/files
命令的语法很容易,我们需要在Client-configs dir中,并使用参数运行命令,表示我们之前创建的客户端的名称。
如果我们需要更多的客户端,请使用其他名称创建更多客户端证书并重新运行此命令。
如果一切顺利,在客户端 - Configs/Files目录中应该有OVPN文件。
我们需要将那些传输到客户端或者客户端,并连接。
我会用scp,我的fedora笔记本电脑我做了这样的命令
scp [email protected]:/home/newuser/client-configs/files/client100.ovpn /home/miki/Documents/
从那里,我们可以使用USB电缆或者Airdroid或者Windows VM或者Mac上的Android手机加载它。