网格论坛

 找回密码
 立即注册
查看: 7445|回复: 15

[插件] 极路由原厂固件安装OpenVPN

[复制链接]

2

主题

27

帖子

180

积分

注册会员

Rank: 2

积分
180
发表于 2019-10-26 09:29:17 | 显示全部楼层 |阅读模式
本帖最后由 ivanfong 于 2019-11-7 11:34 编辑

对于還在用極路由原厂固件的fans,很久以来VPN都是困扰大家的一个难解决的问题,如果你所在地还可以用极路由的VPN插件(PPTP+L2TP),那么恭喜你,你不用往下看,那个最简单。很多地方电信供应商已经墙了VPN,最好的解决方案我认为只有OpenVPN。让我们来折腾一番。
以下笔记是基于极路由4pro/B70,創建環境為極路由作為主路由,tcp連接,默認端口1194,理论上原厂固件hiwifoOS都支持,需要固件root,putty,winscp,UltraEdit类的文本编辑软件(不要用windows自带的写字板),以及需要能大概理解配置OpenVPN的能力,需要输入的命令會用红色字体显示主要说明用绿色字体显示需要复制粘贴的内容用蓝色字体显示,整個過程以windows里面操作,很少輸入命令,復制粘貼回車即可,牽扯到需要修改配置文件,都是復制粘貼。修改配置文件請做好原文件備份修改配置文件最好把我的注釋刪掉。开始

1,putty登录极路由后台,安装openvpn-openssl
opkg update
opkg install openvpn-openssl

2,第二步是难点也不难,如果搞不定这步骤就不要看下去了~~~!!!因为极路由软件库不包括openvpn-easy-rsa,所以要靠其他方式创建openvpn服务器/客户端证书,比如用windowns版本的OpenVPN,或者其他linus,或者其他开放固件openwrt/lede路由,或者虚拟机安装openwrt/lede,目的是要得到以下7个文件缺一不可,不同方式创建的证书文件是通用的:ca.crt(CA证书)/ca.key(CA Key)/server.crt(服务器证书)/server.key(服务器Key)/client.crt(客户端证书)/client.key(客户端Key)/dh2048.pem(密码交换文件)
保存好以上7个证书文件待用。若需要多个客户端,你可多创建几个,例如client1,2,3,4,。。。。。。创建证书方法請百度,或看二楼的簡要创建方法(發現用刷了老毛子固件的路由器創建證書更簡單,它自帶有UI的openvpn)

3,配置网络接口,用winscp双击/etc/config/network文件來修改,文件最底部添加以下籃字:(會linux命令用命令修改也可以 vi /etc/config/network
config interface 'vpn0'
       option ifname 'tun0'
       option proto 'none'
       option auto '1'

重载配置
/etc/init.d/network reload

4,防火墙设置
    4.1 用極路由自帶的端口轉發插件,設置一個1194     192.168.199.1(你的路由IP)     tcp/upd     1194     意思就是所有外網1194端口的請求都轉發到192.168.199.1的1194端口。

    4.2 修改防火墙文件,用winscp双击/etc/config/firewall文件修改,文件最底部添加以下籃字,(會linux命令用命令修改也可以 vi /etc/config/firewall)
config rule
       option name 'Allow-OpenVPN-Inbound'
       option target 'ACCEPT'
       option src 'wan'
       option dest_port '1194'
       option proto 'tcp'
config zone
       option name 'vpn'
       option input 'ACCEPT'
       option forward 'ACCEPT'
       option output 'ACCEPT'
       option masq '1'
       option network 'vpn0'
config forwarding
       option src 'vpn'
       option dest 'wan'
config forwarding
       option src 'vpn'
       option dest 'lan'

    4.3 重载配置
/etc/init.d/firewall reload

5,修改OpenVPN配置文件。
    5.1 用winscp双击/etc/config/openvpn文件修改,见下图紫色字,只改兩处,其他不更改,保存退出
package openvpn

#################################################
# Sample to include a custom config file.       #
#################################################

config openvpn custom_config

        # Set to 1 to enable this instance:
        option enabled 1

        # Include OpenVPN configuration
        option config /etc/openvpn/server.conf



    5.2 用UltraEdit建立server.conf文件,内容如下:把server.conf放入/etc/openvpn/目录里面

port 1194
proto tcp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh2048.pem
server 10.8.0.0 255.255.255.0
;tls-auth ta.key 0
;ifconfig-pool-persist ipp.txt
topology subnet
;client-config-dir /etc/openvpn/ccd
;push route "192.168.199.0 255.255.255.0"
push "comp-lzo"
push "route 192.168.199.0 255.255.255.0"     #你自己的路由IP网段
push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 192.168.199.1"        #你自己的路由的網關
client-to-client
duplicate-cn
keepalive 10 120
comp-lzo
max-clients 100
persist-key
persist-tun
user nobody
group nogroup
status openvpn-status.log
log openvpn.log
;log-append  openvpn.log
verb 3
mute 20

    5.3 把第二步创建的证书放入/etc/openvpn/目录
    ca.crt(CA证书)/ca.key(CA Key)/server.crt(服务器证书)/server.key(服务器Key)/client.crt(客户端证书)/client.key(客户端Key)/dh2048.pem(密码交换文件)
    5.4 启动OpenVPN
/etc/init.d/openvpn enable
/etc/init.d/openvpn start


服務端配置完成,用這個命令cat /etc/openvpn/openvpn.log可以查看日志文件看程序是否正常启动,一般會看到以下類似信息

Tue Aug 2 16:15:36 2016 OpenVPN 2.3.6 arm-openwrt-linux-gnu [SSL (OpenSSL)][LZO] [EPOLL] [MH] [IPv6] built on Jul 21 2016
-略
-略
-略
-略
Tue Aug 2 16:15:36 2016 Initialization Sequence Completed

    5.5,最好重啟一下吧reboot

6,客户端配置。以下6.1和6.2 二选一即可。
    6.1不推荐。建立一个空文件xxx.ovpn,名字自定,最好用UltraEdit類的來創建,内容即以下蓝色字。然后把4个文件ca.crt/client.crt/client.key/xxx.ovpn放到手机里同一文件夹,点击xxx.ovpn文件导入就可以了,
client
dev tun   
proto tcp
remote iv77g.vicp.io 1194 #服务端IP或者DDNS域名改成你自己的
resolv-retry infinite
nobind
persist-tun
persist-key
comp-lzo
verb 3
ns-cert-type server
#tls-client
redirect-gateway def1
ca ca.crt #CA证书
cert client.crt #客戶端证书
key client.key #客戶端Key

6.2,推荐~~~!!!整合式的单一客戶端配置文件如下xxx.ovpn,方法就是把ca.crt/client.cet/client.key里面的證書相關内容粘贴进xxx.ovpn,用UltraEdit編輯
---ca.crt里的內容貼在<ca>    </ca>中間; client.crt里的部分內容貼在<cert>    </cert>中間;client.key里的內容貼在<key>    </key>中間
client
dev tun   
proto tcp
remote iv77g.vicp.io 1194 #服务端IP或者DDNS域名改成你自己的
resolv-retry infinite
nobind
persist-tun
persist-key
comp-lzo
verb 3
ns-cert-type server
#tls-client
redirect-gateway def1
<ca>
-----BEGIN CERTIFICATE-----
MIIExzCCA6+gAwIBAgIJAL7HHKOY4z5RMA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD
略略略---這里填你的證書里的內容
tbd3DTjtvA/Q0yoXkSs55aj5oa0PB0Ib/asy
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIFCDCCA/CgAwIBAgIBAjANBgkqhkiG9w0BAQsFADCBnTELMAkGA1UEBhMCQ04x
略略略---這里填你的證書里的內容
P5JRbHkEWRbc0qH2d1Gsze5772HGtwffsYjubrgP6QiiGj3MaPweTnMkk+o=
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCdV2C9v+sJVmUo
略略略---這里填你的證書里的內容
6JvUeOQXJ7mXflfOppXXAy0=
-----END PRIVATE KEY-----
</key>

7,手機下载安卓端OpenVPN并安裝,谷歌市場的OpenVPN app我覺的最穩定,見貼子最底部,4個分包,不過是英文版:使用方法就是用安卓文件管理器点击刚才创建的xxxx.ovpn文件,他会提示你用OpenVPN app打开
---電腦端使用方法請度娘,大体相同
---蘋果手機太高端,沒有研究過,自己App store找吧,不做介紹,封閉系統,鄙視之

以上已经完成所有配置,用你的設備連接吧。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
寫在最后:如果你正常使用可不看以下内容。
關于redirect-gateway def1 bypass-dhcp的参数說明,網上找到這個解釋,如果該參數影響了你正常使用,請按照以下方法去解決吧。
openvpn中服务器推送 redirect-gateway def1 bypass-dhcp 的目的是在所有客户端的默认网关都将重定向到VPN,这将导致诸如web浏览器、DNS查询等所有客户端流量都经过这里,它的目的就是客户端在使用不同的私有IP地址时可以确保能连上openvpn的服务器,需要配合客户端上的配置redirect-gateway def1来实现,这种方法也是连接openvpn服务器最简单粗暴的方法。但是如果有的时候客户端上如果需要正常上网受到影响,那就需要我们在OpenVPN服务器配置文件(/etc/openvpn/server.conf)里修改,前面加#注释掉就不会影响到客户端正常的网络通信,当然 redirect-gateway def1 bypass-dhcp的方法也可以做为备用。
#push redirect-gateway def1 bypass-dhcp  #注釋掉此行參數
同时,客户端配置文件xxx.ovpn文件里此语句也要注释掉
#redirect-gateway def1  #注释掉这一行
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

小插曲,连上OpenVPN后,可以訪問路由器上的共享硬盘,可以访问其他局域网电脑,,,,,,但是不能访问局域网里群晖的文件共享。百思不得其解,最后才想起我的群晖里面也有一个OpenVPN服务器,地址也是10.8.0.0,所以冲突了,改掉其中一个网段后就可以访问了

OpenVPN Connect_3.0.7.part1.rar

921.6 KB, 下载次数: 26

1of4

OpenVPN Connect_3.0.7.part2.rar

921.6 KB, 下载次数: 17

2of4

OpenVPN Connect_3.0.7.part3.rar

921.6 KB, 下载次数: 16

3of4

OpenVPN Connect_3.0.7.part4.rar

393.64 KB, 下载次数: 12

4of4

回复

使用道具 举报

2

主题

27

帖子

180

积分

注册会员

Rank: 2

积分
180
 楼主| 发表于 2019-10-26 10:20:52 | 显示全部楼层
本帖最后由 ivanfong 于 2019-11-5 20:35 编辑

在簡略介紹創建證書的方法,我是在虛擬機里安裝了一個LEDE(openwrt)來創建證書的
安装openvpn-easy-rsa,留意安裝的時候有沒有出錯信息,一般依賴包下載容易出錯,軟件源的問題,若有問題多安裝幾次
opkg update
opkg install openvpn-openssl
opkg install openvpn-easy-rsa
備份原檔
cd /etc/easy-rsa/
cp vars vars.backup    #备份原文件
更改配置文件,或者用winscp更改
若用命令putty里修改的話   
cd /etc/easy-rsa/
vi vars  
然后在VI里更改为如下:除了前三條,以下都可以自己定義,隨意填應該也可以,最好還是改一下吧,從上到下分別為密鑰長度/CA有效期/key有效期/國家代碼/省份代碼/城市代碼/組織/郵件/部門,第一條密鑰長度2048夠用了,整個過程大概需時10分鐘。
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="CN"
exportKEY_PROVINCE="GD"
export KEY_CITY="ShenZhen"
exportKEY_ORG="Home"
exportKEY_EMAIL="7vddddg@163.com"
exportKEY_OU="Home"

依次以下命令,开始生成证书,生成server和client密钥,有時候會讓你確認,回車即可,最后会有两步确认直接输入”y”回车,client密钥还会要求设置密码,回车不设置密码。在/etc/easy-rsa/目录下输入以下命令
cd /etc/easy-rsa/
build-ca
build-dh
build-key-server server
build-key-pkcs12 client      ------若需要創建多個客戶端,可以一次性創建,例如 client1,client2.。。。。。
完成后到 /etc/easy-rsa/keys #查看keys目录,之前命令执行成功会多出以下文件,keys目录可以copy到其他地方做一个备份,所有openvpn通用。
01.pem  ca.key     client.key  index.txt           index.txt.old  server.crt
02.pem  client.crt client.p12  index.txt.attr      serial         server.csr
ca.crt  client.csr dh2048.pem index.txt.attr.old serial.old     server.key
有用的文件复制到你的極路由\etc\openvpn\目录
ca.crt,   ca.key,   server.crt,   server.key,   client.crt,   client.key,   dh2048.pem
完成證書創建工作
回复

使用道具 举报

0

主题

8

帖子

34

积分

新手上路

Rank: 1

积分
34
发表于 2019-10-26 23:48:44 | 显示全部楼层
大神啊,这样的话所有流量都从隧道走 ?
回复

使用道具 举报

0

主题

8

帖子

34

积分

新手上路

Rank: 1

积分
34
发表于 2019-10-26 23:51:09 | 显示全部楼层
>10,完成所有配置,去極路由設置端口轉發。用你的設備連接吧

为什还要设置端口转发,这个缺点就是不能 随时 启停吧,没有入口 ?
回复

使用道具 举报

2

主题

27

帖子

180

积分

注册会员

Rank: 2

积分
180
 楼主| 发表于 2019-10-27 11:35:25 | 显示全部楼层
本帖最后由 ivanfong 于 2019-10-27 12:06 编辑

不是大神,我也是初学者。
所有流量都从隧道走
不需要设置转发的,我设置转发是只是因为我自己内网开了多个openvpn服务器,配置相同,证书也相同,所以我需要设转发。会修改教程加以说明
另外,更新了教程,user防火墙配置文件iptables里面少了一个空格,已经更正
另外,openvpn配置文件要push 自己的网段,dns也要设成自己的,已经更新

回复

使用道具 举报

8

主题

46

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
发表于 2019-10-27 14:55:41 | 显示全部楼层
本帖最后由 waitingyou 于 2019-10-27 15:05 编辑

我现在把openvpn安装在品胜路由式电霸(单网口)上,作为旁路由使用,要翻墙就连旁路由,普通上网就连极路由。现在在研究同时开多个隧道口后,能否实现隧道负载均衡,使用啥软件实现。主要飞机场虽然稳定,但太多要钱,而日本筑波大学的VPN项目一直是免费。
现在碰到的问题是tun口最多只能开三个,如果加到5个隧道,有两个隧道口是无法添加。。。不知道是否与我网卡口的数量有关。
另外接品胜VPN后不能访问本地硬盘,只能接极路由才能访问,这是否要修改VPN配置文件解决
那品胜只有单网口,我刷了蚂蚁路由的固件后,网络就会有eth0(实体网口)和eth1(以前刷TP703n固件就只有eth0),因为这品胜路由也有接硬盘下载,所以要兼顾让极路由下的客户端能访问品胜路由的硬盘。
所以我安装Macvlan,把eth0物理设置取消桥接,固定IP,网关指向极路由,取消DHCP服务。在eth0实体网口增加Vth0接口,用于wan和wan6的;eth1物理设置设桥接,不勾选eth0、1,只勾wifi,设置成另外IP路段,启用DHCP服务,启用wifi,wifi物理设置勾eth1

openvpn 通用教程
回复

使用道具 举报

2

主题

27

帖子

180

积分

注册会员

Rank: 2

积分
180
 楼主| 发表于 2019-10-27 15:32:08 | 显示全部楼层
waitingyou 发表于 2019-10-27 14:55
我现在把openvpn安装在品胜路由式电霸(单网口)上,作为旁路由使用,要翻墙就连旁路由,普通上网就连极路 ...

这里主要是测试OpenVPN局域网,不探讨翻墙,免流之类
关于局域网访问问题,我同样也遇到了不能访问群晖及局域网内共享的问题,只可以访问极路由上连接的硬盘,我也在继续学习中
回复

使用道具 举报

8

主题

46

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
发表于 2019-10-27 21:23:26 | 显示全部楼层
ivanfong 发表于 2019-10-27 15:32
这里主要是测试OpenVPN局域网,不探讨翻墙,免流之类
关于局域网访问问题,我同样也遇到了不能访问群晖及 ...

我只对油管有兴趣,弄这个为能免费上油管
回复

使用道具 举报

0

主题

6

帖子

106

积分

注册会员

Rank: 2

积分
106
发表于 2019-11-7 10:48:50 | 显示全部楼层
好文,照着操作了一遍,配成了
回复

使用道具 举报

2

主题

27

帖子

180

积分

注册会员

Rank: 2

积分
180
 楼主| 发表于 2019-11-7 11:45:32 | 显示全部楼层
dgiij 发表于 2019-11-7 10:48
好文,照着操作了一遍,配成了

祝賀祝賀。
看似步驟很多,細心點的話是不會出錯,基本不會命令也能用winscp完成。
最初調試參數的時候很痛苦,基本把每個參數都學習了一邊,也算是學習到了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

此版无人维护!极路由问题到群里喊(急修仙群)834378293

小黑屋|手机版|联系我们 ( 京ICP备16001788号 )

GMT+8, 2020-10-1 02:46 , Processed in 0.034181 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表