如何在FreeBSD 10.2中安装和配置OpenVPN
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易于部署和安装在我们自己的服务器中,如果我们想保护自己的在线“隐私”,这是最好的解决方案之一。