如何在FreeBSD 10.2中安装和配置OpenVPN

时间:2020-03-05 15:32:23  来源:igfitidea点击:

VPN或者虚拟专用网络是跨公用网络的专用网络,即Internet。
VPN通过Internet或者服务提供商拥有的专用网络提供安全的网络连接。
VPN是使用某些安全协议(例如IPSec(互联网协议安全性),SSL/TLS(传输层安全性),PPTP(点对点隧道协议)或者什至什至是)来提高在线“隐私”的最聪明的解决方案之一我们可以使用SSH(安全shell)来保护远程连接,通常称为端口转发,但是我们不建议这样做。

OpenVPN是一个开源项目,可与已实施的虚拟专用网络提供安全连接。
它是灵活,可靠和安全的。
Openvpn使用openssl库提供安全的加密,并且可以在具有IPv4和IPv6支持的UDP和TCP协议下运行。
设计用于与大多数平台上可用的TUN/TAP虚拟网络接口配合使用。
Openvpn为用户提供了多种使用方式,我们可以使用基于用户名/密码,基于证书的身份验证。

在本教程中,我们将尝试安装“基于证书的身份验证的FreeBSD 10.2中的OpenVPN”,因此,如果有人拥有证书,则可以使用Our VPN。

步骤1-更新系统

在开始安装之前,请确保系统是最新的。
请使用“ freebsd-update”进行更新:

freebsd-update fetch
freebsd-update install

第2步-安装OpenVPN

我们可以通过目录“/usr/ports/openvpn /”中的freebsd端口安装开放式vpn,也可以使用“ pkg”命令使用二进制软件包方法进行安装。
在本教程中,我使用pkg命令。
让我们使用以下命令进行安装:

pkg install openvpn

该命令将安装openvpn所需的“ easy-rsa”和“ lzo2”软件包。

第3步-生成服务器证书和密钥

我们需要一个“ easy-rsa”软件包来生成服务器密钥和证书,并将其安装在我们的freebsd上。

因此,现在请为openvpn和我们的密钥创建新目录:

mkdir -p /usr/local/etc/openvpn/

接下来,将“/usr/local/share /”中的easy-rsa目录复制到openvpn目录:

cp -R /usr/local/share/easy-rsa /usr/local/etc/openvpn/easy-rsa/

转到openvpn easy-rsa目录,然后使用“ chmod”命令将其中的所有文件可执行。

cd /usr/local/etc/openvpn/easy-rsa/
chmod +x *

我们必须在easy-rsa目录中生成加密证书:

. ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/local/etc/openvpn/easy-rsa/keys
./clean-all

接下来,我们要生成4个密钥和证书:

  • CA(证书颁发机构)密钥
  • 服务器密钥和证书
  • 客户密钥和证书
  • DIFFIE-HELLMAN参数(SSL/TLS连接的服务器端必需)

产生ca.key

在easy-rsa目录中,请运行上面的命令:

./build-ca

输入有关州,国家/地区,电子邮件等的信息。
我们可以通过按“ Enter”键使用默认值。
该命令将在“ keys /”目录中生成一个ca.key和ca.crt。

生成服务器密钥和证书

使用“ build-key-server nameofserverkey”生成服务器密钥,我们使用“ server”作为我们的服务器名称。

./build-key-server server

输入有关州,国家/地区,电子邮件等的信息。
我们可以通过按“ Enter”键使用默认值。
并键入“ y”以确认所有信息。

生成客户端密钥和证书

在easy-rsa目录中使用“ build-key nameofclientkey”命令生成客户端密钥和证书。
在本教程中,wi将使用“ client”作为客户名称。

./build-key client

输入有关州,国家/地区,电子邮件等的信息。
我们可以通过按“ Enter”键使用默认值。
并键入“ y”以确认所有信息。

生成dh参数

freebsd 10.2中dh参数的默认密钥大小为2048位密钥。
它很强大,尽管我们也可以使用4096位密钥来增强安全性,但它会使握手过程变慢。

./build-dh
Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time

现在,所有证书都在密钥目录“/usr/local/etc/easy-rsa/keys /”下创建。
最后,我们需要将keys目录复制到openvpn。

cp -R keys ../../
cd ..
ll
total 40
drwxr-xr-x 4 root wheel 512 Sep 21 00:57 easy-rsa
drwx------ 2 root wheel 512 Sep 21 00:59 keys

第4步-配置OpenVPN

在此步骤中,我们将使用之前创建的所有密钥和证书来配置openvpn。
我们需要将openvpn配置文件从目录“/usr/local/share/examples/openvpn/sample-config-files /”复制到我们的openvpn目录“/usr/local/etc/openvpn /”。

cp /usr/local/share/examples/openvpn/sample-config-files/server.conf/usr/local/etc/openvpn/server.conf
cd /usr/local/etc/openvpn/

接下来,使用nano编辑“ server.conf”文件,如果没有,请使用以下命令安装:

pkg install nano

现在编辑文件:

nano -c server.conf

注意:-c用于显示nano编辑器中的行号。

在第32行中,我们需要配置openvpn使用的端口。
我将使用默认端口:

port 1194

我是UDP协议,它是默认配置,第36行:

proto UDP

接下来,转到第78行以配置证书颁发机构(CA),服务器密钥,客户端密钥和dh参数。

ca /usr/local/etc/openvpn/keys/ca.crt
cert /usr/local/etc/openvpn/keys/server.crt
key /usr/local/etc/openvpn/keys/server.key #our server key
dh /usr/local/etc/openvpn/keys/dh2048.pem

并且请配置由该网络中的openvpn和客户端使用的专用ip,请转到第101行。
我将保留默认ip。

server 10.8.0.0 255.255.255.0

最后一个配置在第280行的日志文件。
我们将把该日志文件放在“/var/log/openvpn /”目录中。

status /var/log/openvpn/openvpn-status.log

并在第289行中:

log /var/log/openvpn/openvpn.log

保存并退出。
现在,请创建用于存储日志的文件:

mkdir -p /var/log/openvpn/
touch /var/log/openvpn/{openvpn, openvpn-status}.log

第5步-启用端口转发并将OpenVPN添加到启动中

要在freebsd中启用端口转换功能,可以使用sysctl命令:

sysctl net.inet.ip.forwarding=1

通过编辑“ rc.conf”文件将openvpn添加到启动时间:

nano rc.conf

添加到下面的行的末尾:

gateway_enable="YES"
openvpn_enable="YES"
openvpn_configfile="/usr/local/etc/openvpn/server.conf"
openvpn_if="tap"

保存并退出。

第6步-启动OpenVPN

启动openvpn wit服务命令:

service openvpn start

并通过检查openvpn使用的端口来检查openvpn是否正在运行:

sockstat -4 -l

我们可以看到端口1194正在打开,并且已被openvpn使用。

步骤7-配置客户端

作为客户端,请下载证书文件:

  • cart
  • client.crt
  • 客户端密钥

将这三个文件复制到主目录,然后更改对使用ssh登录的taht用户的权限:

cd /usr/local/etc/openvpn/keys/
cp ca.crt client.crt client.key /home/myuser/
cd /home/myuser/
chown myuser:myuser ca.crt client.crt client.key

然后下载证书到客户端,我在这里使用linux,所以我只需要使用scp命令下载它:

scp [email protected]:~/ca.crt myvpn/
scp [email protected]:~/client.crt myvpn/
scp [email protected]:~/client.key myvpn/

请创建客户端文件配置:

nano client.ovpn

请在下面添加代码:

client
dev tun
proto udp
remote 192.168.1.100 1194 #ServerIP and Port used by openvpn
resolv-retry infinite
nobind
user nobody
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3

保存并退出。

现在,我们看到属于客户端的文件:

ll
total 20K
-rw-r--r--. 1 myuser myuser 1.8K Sep 21 03:09 ca.crt
-rw-r--r--. 1 myuser myuser 5.4K Sep 21 03:09 client.crt
-rw-------. 1 myuser myuser 1.7K Sep 21 03:09 client.key
-rw-rw-r--. 1 myuser myuser 213 Sep 20 00:13 client.ovpn

步骤8-测试OpenVPN

这是测试openvpn的时间,请使用我们拥有的openvpn文件连接到openvpn服务器。
并用命令连接:

cd myopenvpn/
sudo openvpn --config client.ovpn

并且我们已经连接到vpn,并且我们有专用ip:10.8.0.6.

Openvpn成功。

另一个测试:

从freebsd服务器ping客户机的专用ip:

ping 10.8.0.6

从客户端,我使用运行openvpn 10.8.0.1的专用ip连接到freebsd服务器。

ssh [email protected]

一切顺利,我们已经建立联系。

总结

VPN或者虚拟专用网络是公共网络(Internet)中的安全和专用网络。
Openvpn是实施虚拟专用网络技术的开源项目,Openvpn使用OpenSSL库保护流量并对其进行加密。
OpenVPN易于部署和安装在我们自己的服务器中,如果我们想保护自己的在线“隐私”,这是最好的解决方案之一。