OpenVPN服务器和客户端安装和配置Debian 7

本文将详细介绍如何在使用Debian Linux的 OpenVPN的获取IPv6连接。 这个过程已经在Debian 7IPv6连接的服务器,以及一个Debian 7桌面KVM VPS进行测试。 命令将作为root运行。

在Debian中安装OpenVPN

什么是OpenVPN?

OpenVPN是使用SSL / TLS建立安全,加密的VPN连接,路由您的网络流量,从而防止窥探一个VPN程序。 Open VPN高度能够透明地穿越防火墙。 事实上,如果情况需要它,您可以在与HTTPS(443)相同的TCP端口上运行它,使得流量不可区分,因此几乎不可能阻止。

OpenVPN的可以使用多种方法,如预共享密钥,证书或用户名/密码,让客户通过服务器的验证。 OpenVPN使用OpenSSL协议并实现许多安全和控制功能,如质询响应身份验证,单点登录功能,负载平衡和故障转移功能以及多守护程序支持。

为什么使用OpenVPN?

认为安全通信 - 认为OpenVPN。 如果你不想让任何人窥探你的互联网流量,使用OpenVPN路由所有的流量通过一个高度加密,安全的隧道。

这在连接到机场和其他地方的公共WIFI网络时尤其重要。 你永远不能确定谁在窥探你的交通。 您可以通过您自己的OpenVPN服务器的流量通道,以防止窥探。

如果你在任何定期监测随意的所有流量和块网站的国家,你可以使用的OpenVPN在TCP端口443,使它从HTTPS流量难以区分。 您甚至可以将OpenVPN与其他安全策略相结合,例如通过SSL隧道对OpenVPN流量进行隧道传输,以击败可能能够识别OpenVPN签名的深度包检测技术。

系统要求

OpenVPN需要非常少的要求运行。 具有64 MB RAM1 GB的硬盘空间系统是足够运行OpenVPN的。 OpenVPN几乎在所有主流操作系统上运行。

在Debian 7上安装和配置OpenVPN

在主服务器上安装OpenVPN

运行以下命令安装OpenVPN。

# apt-get install openvpn

默认情况下,易于RSA脚本“ 的/ usr /共享/易RSA /目录下安装。 因此,我们需要对这些脚本复制到所需的位置,即/根/易RSA。

# mkdir /root/easy-rsa
cp -prv /usr/share/doc/openvpn/examples/easy-rsa/2.0 /root/easy-rsa

生成CA证书和CA密钥

打开文件“ 瓦尔 ”,并进行以下更改,但更改之前,我建议你把原始文件的备份。

# cp vars{,.orig}

使用文本编辑器,设置easy-rsa的默认值。 例如。

KEY_SIZE=4096
KEY_COUNTRY="IN"
KEY_PROVINCE="UP"
KEY_CITY="Noida"
KEY_ORG="Home"
KEY_EMAIL="user@example.net"

在这里,我使用的是4096位的密钥。 您可以根据需要使用1024,2048,40968192位的密钥。

通过运行命令导出默认值。

# source ./vars

清除先前生成的所有证书。

./clean-all

接下来,运行以下命令来生成CA证书和CA密钥。

# ./build-ca

通过运行命令生成服务器证书。 使用您的服务器名称替换“服务器名称”。

# ./build-key-server server-name

生成的Diffie Hellman的PEM证书。

# ./build-dh

生成客户端证书。 使用您的客户端名称替换“客户端名称”。

# ./build-key client-name

产生HMAC代码。

# openvpn --genkey --secret /root/easy-rsa/keys/ta.key

将证书复制到客户端和服务器计算机,如下所示。

  1. 确保ca.crt存在在客户机和服务器上。
  2. 在关键的ca.key应该是在客户端上。
  3. 服务器需要server.crt这 dh4096.pem,server.keyta.key。
  4. client.crt,client.keyta.key应该是在客户端上。

要在服务器上设置密钥和证书,请运行命令。

# mkdir -p /etc/openvpn/certs
# cp -pv /root/easy-rsa/keys/{ca.{crt,key},server-name.{crt,key},ta.key,dh4096.pem} /etc/openvpn/certs/

配置OpenVPN服务器

现在需要配置OpenVPN服务器。 打开文件“/etc/openvpn/server.conf”。 请按如下所述进行更改。

script security 3 system
port 1194
proto udp
dev tap
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server-name.crt
key /etc/openvpn/certs/server-name.key
dh /etc/openvpn/certs/dh4096.pem
tls-auth /etc/openvpn/certs/ta.key 0
server 192.168.88.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 1800 4000
cipher DES-EDE3-CBC # Triple-DES
comp-lzo
max-clients 10
user nobody
group nogroup
persist-key
persist-tun
#log openvpn.log
#status openvpn-status.log
verb 5
mute 20

在服务器上启用IP转发。

# echo 1 > /proc/sys/net/ipv4/ip_forward

运行以下命令将OpenVPN设置为在引导时启动。

# update-rc.d -f openvpn defaults

启动OpenVPN服务。

# service openvpn restart

在客户端上安装OpenVPN

运行以下命令在客户端计算机上安装OpenVPN。

# apt-get install openvpn

使用文本编辑器,设置在“/etc/openvpn/client.conf'OpenVPN的客户端配置,在客户端上。 示例配置如下:

script security 3 system
client
remote vpn_server_ip
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/client.crt
key /etc/openvpn/certs/client.key
cipher DES-EDE3-CBC
comp-lzo yes
dev tap
proto udp
tls-auth /etc/openvpn/certs/ta.key 1
nobind
auth-nocache
persist-key
persist-tun
user nobody
group nogroup

运行以下命令将OpenVPN设置为在引导时启动。

# update-rc.d -f openvpn defaults

在客户端上启动OpenVPN服务。

# service openvpn restart

一旦你感到满意的是OpenVPN是在IPv4上运行良好,这里是如何获得的IPv6 over OpenVPN的工作。

使IPv6在服务器上使用OpenVPN

添加以下行以'/etc/openvpn/server.conf'文件服务器配置的结束。

client-connect /etc/openvpn/client-connect.sh
client-disconnect /etc/openvpn/client-disconnect.sh

这两个脚本建立/客户机每次连接/断开时间摧毁IPv6隧道。

这里是client-connect.sh的内容。

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
ifconfig $dev up
ifconfig $dev add ${BASERANGE}:1001::1/64
ip -6 neigh add proxy 2a00:dd80:003d:000c:1001::2 dev eth0
exit 0

我的主机分配我从2A00 IPv6地址:dd80:003D:0​​00C :: / 64块。 因此,我使用
2A00:dd80:003D:0​​00C为BASERANGE。 根据主机分配给您的值修改此值。

dd80:003D:0​​00C:每个客户端连接到OpenVPN的时候,这个脚本地址2A00分配1001 :: 1的服务器的tap0中接口的IPv6地址。

最后一行为我们的隧道设置了邻居发现。 我已经添加了客户端连接tap0中的代理地址的IPv6地址。

这里是client-disconnect.sh的内容。

#!/bin/bash
BASERANGE="2a00:dd80:003d:000c"
/sbin/ip -6 addr del ${BASERANGE}::1/64 dev $dev
exit 0

这只是删除服务器的IPv6隧道地址,当客户端断开。 根据需要修改BASERANGE的值。

使脚本可执行。

# chmod 700 /etc/openvpn/client-connect.sh
# chmod 700 /etc/openvpn/client-disconnect.sh

添加下面的条目“的/etc/rc.local'(你也可以修改相关的sysctl在/etc/sysctl.conf中)。

echo 1 >/proc/sys/net/ipv6/conf/all/proxy_ndp
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
/etc/init.d/firewall stop && /etc/init.d/firewall start

这些条目激活邻居发现和转发。 我还添加了一个防火墙。

创建“/etc/init.d/firewall',放在下面的内容。

#!/bin/sh
# description: Firewall
IPT=/sbin/iptables
IPT6=/sbin/ip6tables
case "$1" in
start)
$IPT -F INPUT
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
$IPT -A INPUT -i tap+ -j ACCEPT
$IPT -A FORWARD -i tap+ -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t nat -F POSTROUTING
$IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
$IPT -A INPUT -i eth0 -j DROP
$IPT6 -F INPUT
$IPT6 -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT6 -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT6 -A INPUT -i eth0 -p icmpv6 -j ACCEPT
$IPT6 -A FORWARD -s 2a00:dd80:003d:000c::/64 -i tap0 -o eth0 -j ACCEPT
$IPT6 -A INPUT -i eth0 -j DROP
exit 0
;;
stop)
$IPT -F
$IPT6 -F
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac

运行“的/etc/rc.local'和启动防火墙。

# sh /etc/rc.local

这完成了服务器端的修改。

使IPv6在客户端上使用OpenVPN

添加如下客户端配置文件“/etc/openvpn/client.conf”的最后几行。

# create the ipv6 tunnel
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh
# need this so when the client disconnects it tells the server
explicit-exit-notify

每次客户端连接到OpenVPN服务器或从OpenVPN服务器断开连接时,上下脚本会构建/销毁客户端tap0连接的IPV6客户端点。

这里是up.sh的内容。

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
ifconfig $dev up
ifconfig $dev add ${IPV6BASE}:1001::2/64
ip -6 route add default via ${IPV6BASE}:1001::1
exit 0

dd80:3D:C:脚本IPV6地址分配2A00 1001 :: 2的客户端IPV6地址,并通过服务器设置默认的IPv6路由。

将IPV6BASE修改为与服务器配置中的BASERANGE相同。

这里是down.sh的内容。

#!/bin/bash
IPV6BASE="2a00:dd80:3d:c"
/sbin/ip -6 addr del ${IPV6BASE}::2/64 dev $dev
/sbin/ip link set dev $dev down
/sbin/ip route del ::/0 via ${IPV6BASE}::1
exit 0

这只是删除客户端的IPV6地址,并在客户端断开与服务器的连接时拆除IPV6路由。

将IPV6BASE修改为与服务器配置中的BASERANGE相同,并使脚本可执行。

# chmod 700 /etc/openvpn/up.sh
# chmod 700 /etc/openvpn/down.sh

或者,修改'/etc/resolv.conf'并添加Google的IPV6Nameservers以进行DNS解析。

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

重新启动服务器上的openvpn,然后从客户端连接到它。 你应该连接。 访问test-ipv6.com看到您的IPv6连接上OpenVPN的正常工作。

参考链接

OpenVPN主页

来源stavrovski

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏