如何在Ubuntu 16.04上配置OpenVPN

时间:2020-03-05 15:31:53  来源:igfitidea点击:

继续系列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手机加载它。