如何在OpenSUSE Leap 42.1上安装和配置OpenVPN

在本教程中,我将向您展示如何在Linux操作系统OpenSUSE Leap 42.1下使用OpenVPNvpn实现虚拟专用网络。 VPN ...

VPN或虚拟专用网络是通过互联网等公共网络的安全专用网络。 VPN是通过互联网的安全通道,可保护您的数据流量,增加互联网隐私和安全性。 对VPN的访问受到安全认证方式的限制。

OpenVPN是构建虚拟专用网络的开源软件,它使用OpenSSL库来加密隧道数据并支持UDP或TCP传输。 OpenVPN可以使用预共享密钥,基于证书和基于用户名/密码的身份验证机制。

在本教程中,我将介绍如何在Linux操作系统OpenSUSE Leap 42.1下使用OpenVPNvpn实现虚拟专用网。

先决条件

  • OpenSUSE Leap 42.1 - 64bit
  • 根权限
  • 启用TUN / TAP

第1步 - 检查是否启用TUN / TAP

如果要在服务器上创建VPN,请确保已安装并启用TUN / TAP。 您可以使用以下命令检查:

cat /dev/net/tun

结果应该是:

cat: /dev/net/tun: File descriptor in bad state

第2步 - 安装OpenVPN

OpenVPN在OpenSUSE存储库中可用。 您可以使用zypper命令安装它:

zypper in openvpn

第3步 - Easy-RSA设置

接下来,下载easy-rsa来生成证书文件。 easy-rsa是管理证书的实用程序,您可以创建根证书颁发机构并请求并签署证书。

转到OpenVPN目录,并使用wget命令下载easy-rsa:

cd /etc/openvpn/
wget https://github.com/OpenVPN/easy-rsa/archive/release/2.x.zip

提取存档并移动easy-rsa目录:

unzip 2.x.zip
mv easy-rsa-release-2.x/easy-rsa/ /etc/openvpn/
rm -rf easy-rsa-release-2.x/

配置密钥

转到easy-rsa目录并编辑vars文件以配置密钥和证书:

cd easy-rsa/2.0/
vim vars

第53行 - 如果你真的偏执,你可以增加键的大小。

export KEY_SIZE=2048

第56和59行 - 密钥和证书将在几天内到期。

export CA_EXPIRE=3650
export KEY_EXPIRE=3650

行64 - 72 - 更改密钥和证书信息的默认值。

export KEY_COUNTRY="US"
export KEY_PROVINCE="California"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
export KEY_NAME="EasyRSA"

保存文件并退出。

初始化PKI

接下来,初始化PKI(公钥基础设施):

source ./vars && ./clean-all && ./build-ca

我们将离开默认值,只需按“Enter”。

初始化pki。

生成Diffie Hellman参数

运行命令如下:

./build-dh

你会看到输出:

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

生成服务器私钥

生成名为“server”的私钥:

./build-key-server server

按enter键并输入“y”确认生成键。

生成服务器密钥。

为客户生成密钥和证书

生成名称为“client1”的客户端密钥和证书:

./build-key client1

按enter键并输入“y”确认密钥生成。

生成客户端证书和密钥。

密钥和证书已经在目录“keys”中生成。 现在创建一个“keys”目录的副本并将其放在“openvpn”目录中。

cp -r keys/ /etc/openvpn/

第4步 - 配置OpenVPN

在这一步中,我们将配置OpenVPN在UDP协议上运行,使用端口2034进行客户端连接。 在OpenVPN目录中创建新的配置文件server.conf。

cd /etc/openvpn/
vim server.conf

粘贴以下配置:

#change with your port
port 2034

#You can use udp or tcp
proto udp

# "dev tun" will create a routed IP tunnel.
dev tun

#Certificate Configuration

#ca certificate
ca /etc/openvpn/keys/ca.crt

#Server Certificate
cert /etc/openvpn/keys/server.crt

#Server Key and keep this is secret
key /etc/openvpn/keys/server.key

#See the size a dh key in /etc/openvpn/keys/
dh /etc/openvpn/keys/dh2048.pem

#Internal IP will get when already connect
server 10.10.2.0 255.255.255.0

#this line will redirect all traffic through our OpenVPN
push "redirect-gateway def1"

#Provide DNS servers to the client, you can use goolge DNS
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

#Enable multiple client to connect with same key
duplicate-cn

keepalive 20 60
comp-lzo
persist-key
persist-tun
daemon

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

#enable log
log-append /var/log/openvpn/openvpn.log

#Log Level
verb 3

保存文件并退出编辑器。

接下来,为openvpn日志创建一个新的目录和文件:

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

第5步 - 配置SuSEfirewall2

SuSEfirewall2是基于文件“/ etc / sysconfig / SuSEfirewall2”生成iptables规则的脚本。 我们将安装SuSEfirewall2,然后配置端口访问OpenVPN,然后我们将使用OpenVPN的iptables脚本启用NAT。

使用zypper命令安装SuSEfirewall2:

zypper in SuSEfirewall2

现在,转到sysconfig目录,并编辑SuSEfirewall2配置文件:

cd /etc/sysconfig/
vim SuSEfirewall2

Line 134 - 启用路由。

FW_ROUTE="yes"

行253 - 从网络外部启用TCP端口22用于SSH访问。

FW_SERVICES_EXT_UDP="22"

行267 - 启用openvpn客户端访问的udp端口 - 端口2034。

FW_SERVICES_EXT_UDP="2034"

行877 - 启用自定义规则SuSEfirewall2。

FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"

保存并退出。

接下来,编辑脚本目录中的SuSEfirewall2自定义规则。

cd /etc/sysconfig/scripts/
vim SuSEfirewall2-custom

在“fw_custom_after_chain_creation”指令内,粘贴新的iptables规则为OpenVPN:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.10.2.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.10.2.0/24 -o eth0 -j MASQUERADE

保存并退出。

注意:

IP 10.10.2.0/24是来自server.conf OpenVPN配置文件的网络。

现在我们可以通过将这个新的配置行添加到sysctl.conf文件来启用转发。

vim /etc/sysctl.conf

粘贴配置如下:

net.ipv4.ip_forward = 1

保存并退出。

注意:

如果文件中已经有行,请将值从“0”更改为“1”,而不是添加新行。

现在运行下面的命令来应用配置更改。

sysctl -p

启动SuSEfirewall2和OpenVPN服务器:

systemctl start SuSEfirewall2
systemctl start openvpn@server

如果您有错误,可以在OpenVPN日志中看到详细的错误信息。

将所有服务添加到系统启动:

systemctl enable SuSEfirewall2
systemctl enable openvpn@server

第5步 - 配置客户端

将密钥目录中的客户端密钥和证书下载到本地计算机。 你可以使用scp命令或sftp,我在这里使用scp:

必须在本地计算机上运行的命令。

scp root@serverip:~/etc/openvpn/keys/ca.crt ~/myvpn/
scp root@serverip:~/etc/openvpn/keys/client1.crt ~/myvpn/
scp root@serverip:~/etc/openvpn/keys/client1.key ~/myvpn/

在myvpn目录中,为客户端“client1.ovpn”创建一个新的配置文件。

cd ~/myvpn/
vim client1.ovpn

粘贴以下配置:

client
dev tun
proto udp

#Server IP and Port
remote SERVERIP 2034

resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo

保存并退出。

要连接到我们的VPN,您可以安装VPN客户端,或者使用Linux,您可以使用“网络管理器”。 如果要使用终端测试VPN,可以使用以下命令:

cd ~/myvpn/
sudo openvpn --config client1.ovpn

连接OpenVPN命令。

参考

https://en.opensuse.org/SDB:OpenVPN_Installation_and_Setup

https://www.howtoing.com/tutorial/how-to-install-openvpn-on-centos-7/