本文将详细介绍如何在使用Debian Linux的 OpenVPN的获取IPv6连接。 这个过程已经在Debian 7与IPv6连接的服务器,以及一个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 RAM和1 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,4096或8192位的密钥。
通过运行命令导出默认值。
# 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
将证书复制到客户端和服务器计算机,如下所示。
- 确保ca.crt存在在客户机和服务器上。
- 在关键的ca.key应该是在客户端上。
- 服务器需要server.crt这 dh4096.pem,server.key和ta.key。
- client.crt,client.key和ta.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:000C :: / 64块。 因此,我使用
2A00:dd80:003D:000C为BASERANGE。 根据主机分配给您的值修改此值。
dd80:003D:000C:每个客户端连接到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的正常工作。
参考链接
来源 : stavrovski