探索flutter框架开发的app在移动应用市场的潜力与挑战
4666
2022-09-14
openvpn2.5.x最新版本在windows下部署服务端支持IPV6(仅技术学习记录)
本文仅作为技术文档记录,学习使用,请合法合规,严格按照国家法律规定执行。请勿违法违规。
openvpn2.5.x最新版本(截至2022年4月10日 最新版本为2.5.6)在windows下部署服务端和客户端配置使用,以及一台电脑上openvpn客户端同时连接多个服务端配置。实际上windows下 linux下只是安装方式不同,配置文件等基本是一样的。
大体实现如下功能:
客户端同时连接到多个服务端配置
windows下如果配置文件不在同目录应该怎么配置文件路径,转义字符\\
配置支持IPV6
openvpn官网地址和安装包-无法直接访问,因此要-安装包,网络自行搜索-,百度搜索都可以搜到的。
一、安装openvpn作为服务端
1.安装服务端
2.注意点-有两个注意的地方:
1.如果想要作为系统服务,则下图的OpenVPN Service下拉选择,作为服务安装
2.作为服务端安装,一定要勾选easyrsa3(2.5.x中默认是EasyRSA3,2.4.x是2),如果不勾选,无法制作CA 等文件,也可以不安装,在其他地方制作好CA 服务端证书和密钥 客户端证书和密钥。
然后进行安装,64位系统默认安装位置是默认安装目录为C:\Program Files\OpenVPN
到此服务端就安装完毕了。下面进行ca 证书 密钥制作。
二、CA 服务端证书和密钥 客户端证书和密钥制作
2.CA
2.1进入EasyRSA Shell模式下
Cmd管理员运行,然后进入C:\Program
Files\OpenVPN\easy-rsa目录下运行EasyRSA-Start.bat 进入EasyRSA Shell命令模式
cd C:\Program Files\OpenVPN\easy-rsa #进入RSA目录下EasyRSA-Start.bat #运行EasyRSA-Start.bat进入RSA shell模式
2.2修改vars配置文件
复制同目录(C:\Program Files\OpenVPN\easy-rsa)下vars.example并重命名为vars,然后找到并修改部分参数为如下
打开vars,找到并修改如下set_var EASYRSA_REQ_COUNTRY "CN" #国家set_var EASYRSA_REQ_PROVINCE "JS" #省set_var EASYRSA_REQ_CITY "SZ" #城市set_var EASYRSA_REQ_ORG "TESTORG" #组织名称,比如公司名等set_var EASYRSA_REQ_EMAIL "TEST@TEST12312.NET" set_var EASYRSA_REQ_OU "TESTVPN" #组织单元set_var EASYRSA_KEY_SIZE 2048 #密钥长度2048set_var EASYRSA_CA_EXPIRE 1460 #ca有效期,单位为天set_var EASYRSA_CERT_EXPIRE 825 #生成的服务端和客户端证书有效期
2.3初始化和创建ca
./easyrsa init-pki #初始化目录
./easyrsa build-ca nopass #nopass参数为CA不加密码,如果要加密码则去掉nopass
然后按照下图中提示输入相关信息,最后可以看到生成的CA文件路径,到此CA就处理好了
2.4服务端证书密钥
./easyrsa gen-req servervpn nopass #servervpn为证书名字,nopass为不加密码#然后按照提示,如下图,输入名称,可直接回车./easyrsa sign server servervpn #注意服务端证书server是固定参数,后面跟上刚刚创建的名字
2.5生成DH文件
./easyrsa gen-dh #生成需要一定时间,等待完成,最后会输出文件路径,请记住
2.6客户端证书密钥
./easyrsa gen-req clientvpn nopass #如果证书要加密码,则去掉nopass,按照下图提示输入过程要求输入,可直接回车./easyrsa sign client clientvpn #注意client为客户端证书生成固定参数,后面clientvpn为刚刚自定义名字
2.7生成ta.key
可选:TLS认证密钥 为DODS,猜解等,可生成ta.key cmd管理员运行进入到
C:\Program Files\OpenVPN\bin执行
openvpn --genkey --secret "C:\Program Files\OpenVPN\config\ta.key" #路径自定义
按照上面命令生成的ta.key就在config目录下
2.8复制文件到对应位置-服务端-客户端
2.8.1服务端证书密钥-配置文件
配置OpenVPN服务端 1、将生成的ca.crt、dh.pem、servervpn.crt、servervpn.key ta.key 具体文件名以自己定义为准,请勿生搬硬套(生成时候都有提示文件位置,复制到C:\Program Files\OpenVPN\config目录下,这4个文件是VPN服务端运行所需要的文件。
在C:\Program Files\OpenVPN\config目录下创建server.ovpn文件,具体按照实际进行配置
#server.ovpn文件内容参数解释,注意代码前的; #都是注释掉的意思,该语句不生效local 0.0.0.0 #监听地址port 10231 #监听端口,自定义proto tcp #协议,可tcp或者udpdev tap #tap模式,windows下建议最好使用tap;dev tunca ca.crt #ca位置,如果和server.ovpn同目录,直接写文件名即可,如果不是同目录,那么写绝对路径也可以cert server.crt #服务端证书,如果同目录,直接写文件名即可,如果不是,可以写绝对路径key server.key #如上解释dh dh.pem #如上解释,交换密钥文件server 10.10.10.0 255.255.255.0 #用于vpn的网段,即服务器自动生成的tap网卡ip和客户端拨号后分配的ipifconfig-pool-persist ipp.txtpush "route 172.21.0.0 255.255.255.0" #推送路由,即这些目的地走VPN;push "redirect-gateway def1 bypass-dhcp" #如果想要默认都走vpn,使用此配置;push "dhcp-option DNS 114.114.114.114" #推送dns地址push "dhcp-option DNS 223.5.5.5"client-to-client #允许客户端和客户端连接,默认情况下客户端只能与服务器相连接duplicate-cntls-auth ta.key 0 #TLS认证密钥 防止DODS等,UDP淹没等恶意gongji,服务器端配置为0 客户端配置为1keepalive 10 120 #每10s ping一次,连接超时时间设置为120scipher AES-256-CBCcomp-lzo #开启vpn连接压缩,如果服务器端开启,客户端也必须开启;user nobody #linux下运行后降低用户权限,为了安全;group nobodypersist-keypersist-tun #持久化选项可以尽量避免访问在重启时由于用户权限降低而无法访问的某些资源auth-nocache #不允许缓存认证信息,密码等,配置后连接不会报密码缓存在内存等告警消息status openvpn-status.logverb 3 #日志级别3,可选0---9,等级越高日志内容越详细;explicit-exit-notify 1
2.8.2 客户端证书密钥-配置文件
在客户端电脑config目录下创建clientvpn.ovpn 名字可自定义以下为参数clientdev tap;dev tunproto tcpremote 111.101.123.234 10231 #服务器端IP 端口resolv-retry infinitenobind #不绑定本机发起端口,配置了即使用随机端口作为源端口;user nobody;group nobody;route 172.21.0.0 255.255.255.0 #注释掉,不生效,因为服务端配置了push后会自动下发路由persist-keypersist-tuncipher AES-256-CBC;# retry on connection failures;[proxy server] [proxy port #]mute-replay-warningsca ca.crt #配置ca,如果文件和配置文件在同一个目录,则直接写文件名,不在同目录,则对应改掉。cert clientvpn.crt #客户端证书 如上解释key clientvpn.key #如上解释auth-nocache #;不缓存用户名密码;ns-cert-type servertls-auth ta.key 1 ##TLS认证密钥 防止DODS gongji,UDP淹没等恶意gongji,服务器端配置为0 客户端配置为1remote-cert-tls servercomp-lzoverb 3
2.8.3注意-特别重要
运行openvpn一定要用管理员运行,不然无法下发写入路由信息以及其他一些需要权限的配置。
三、内核转发-IP路由
windows linux默认是没有开启内核转发的
windows下在cmd中执行ipconfig/all即可查看IP路由转发是否开启
windows默认是没有启用IP转发的,因此需要开启,编辑注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
选择下面的项目:IPEnableRouter,默认是0,改为1是启用,然后重启系统,在ipconfig/all可以看到否变成了是
设置Internet连接共享
这个连接共享不是必须的,在cmd里执行ipconfig/all确认路由转发是否开启,默认是关闭的。需要开启路由转发,编辑注册表即可。客户端就不仅可以使用openvpn-tap的ip地址访问服务器资源,也可以使用物理网卡访问。(举例:服务器本身配置的单网卡,ip是172.21.0.11,安装openvpn后虚拟tap网卡出来,openvpn的server-ip是10.11.12.0/24,默认服务器openvpn使用10.11.12.1,客户端比如自动分配的是10.11.12.2,那么在客户端可以使用172.21.0.11访问nginx-web,如果不开启路由转发,是不可以使用172.21.0.11访问的,只可以使用10.11.12.1访问)
linux下:以下命令来启用端口转发内核模块
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.confsysctl -p
如果开启了防火墙则需要添加对应规则,如果是iptables写nat。具体自行百度。
四、报错和各个注意点,一定要看
4.1一个客户端需要同时连接多个服务端怎么配置
如果有多个连接,则这样编辑客户端配置文件和放置客户端证书密钥等
主要是配置文件都放在config下,然后可以在config下新建文件夹将各自的证书-密钥等文件放进去,然后在xxx.ovpn配置文件中注意ca cert key ta的路径写法,使用相对路径。如果是config下的1目录中ca则在配置文件路径写成ca ./1/xxx.ca 如果使用绝对路径,则写成比如D:\\aaa\\bbb\\ccc\\ca.crt
注意:如果要同时连接,则服务端一定要使用不同的的子网络,两个服务端配置文件中
server x.x.x.x x.x.x.x一定要是不同的子网,然后push "route
x.x.x.x x.x.x.x"推送路由一定要是不同子网,不然无法同时使用,会产生冲突。
样例二
4.2windows下增加tap网卡
windows 安装多个tap虚拟网卡方式
在 Windows 系统中 OpenVpn 默认只安装一个 TAP 虚拟网卡;如果需要同时连接多个,则需要为每个 VPN 配置一个 TAP 虚拟网卡。
一、增加虚拟网卡的方法
2.5.x以后版本
找到确认"C:\Program Files\OpenVPN\bin\tapctl.exe" 下是否有tapctl.exe
然后cmd管理员执行"C:\Program Files\OpenVPN\bin\tapctl.exe" create --hwid root\tap0901
截图中红色1为安装客户端时候默认安装的,2为新增加的,将2重命名为如下
命令自定义新增自定义明名称新增一个TAP adapter
tapctl list #列出所有tap网卡
tapctl.exe create --name "OpenVPN TAP-Windows6 2" --hwid root\tap0901 ##添加一块网卡,名称为name后面引号中内容,不可为中文
这个需要注意,只需要保证你有两个TAP adapter,openvpn 客户端连接时会自动去选择并使用,不需要手动一对一绑定到配置文件中。
4.2配置文件中网卡绑定
当需要指定某个配置文件使用特定的虚拟网卡的时候可以将配置项设置如下:
dev tapdev-node "openvpn-tap2" #openvpn-tap2为网卡名字
4.3说明
ca.crt #根CA证书,服务器+所有客户端都需要ca.key #根CA密钥dh.pem dhxxx.pem #迪菲-赫尔曼参数 用于证书交换 服务端用serverxx.crt #服务端证书 服务端用serverxx.key #服务端密钥 服务端用client1.crt #client1证书 客户端用client1.key #client1密钥 客户端用client2.crt #client1证书 客户端用client2.key #client1密钥 客户端用ta.key #tls 服务端用+客户端用server1.ovpn #服务端配置文件 服务端用client1.ovpn #客户端配置文件 客户端用
五、配置支持IPV6
IPV6
Add the following to a functioning OpenVPN config:
server-ipv6 2001:db8:0:123::/64 #即配置openvpn连接时候分配IP子网
推送IPV6路由
push "push "route-ipv6 2001:db8:0:abc::/64" #部分走VPN
要重定向所有绑定到Internet的流量,请使用当前分配的公共IP空间,如下所示:
push "route-ipv6 2000::/3"
连接成功后可以看到获取到的IPV4地址和IPV6地址,在客户端ping服务端通
这里一定要确认客户端到服务端的IP 路由可达,路由可达。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~