搭建openvpn服务器与通过代理转发openvpn流量教程v1.1

2024-12-20 14:24:38 2点赞 6收藏 1评论

此教程为搭建ipv6openvpn教程,后面添加了nginx代理转发之后的ipv4openvpn代理教程。

图下为拓扑图

搭建openvpn服务器与通过代理转发openvpn流量教程v1.1

之前我发的教程,搭建zerotier和通过ipv6访问家里的nas。后来,我就想在家里搭建一个vpn,这样能满足我想在公司的网络下访问一些网站,但是不想让公司知道的情况。而vpn就能满足我的隐瞒访问的需求。另外说明下。此教程是简单搭建教程,本人对openvpn是第一次搭建。所以会更多说明我在搭建时遇到的情况,然后搭建环境需要在家有openwrt。且有公网ipv4或者ipv6的情况下才能实现。如果没有公网ip,或者没有openwrt的可以不用往下看了

开始正式教程。

1、安装openvpn服务器

openwrt的Software下搜索安装luci-app-openvpn-server_2.0_all.ipk,版本不一定要2.0。另外贴个链接,有的人软件源可能没这安装包。那么可以在这找openwrt软件包链接 找的时候要对上自己openwrt版本和架构。在首页即可查到这信息,以我为例,我的是openwrt 21.02.5版本x86/64的。装完记得检查是否报错。

搭建openvpn服务器与通过代理转发openvpn流量教程v1.1

2、配置openvpn:

安装完之后首页栏那里会有vpn,从那里进去。第一步,选择openvpn的协议,有ipv4跟ipv6的tcp udp四种选择。选择自己合适的。然后是端口,默认1194可改可不改。下一步是wan ddns or ip。正常是填你的公网ip。如果你是动态的公网,做了动态dns的,那就填你的域名。下一步Client Settings就是vpn服务器推送给你客户端的配置。我是推送了几个内网网段的路由和我的dns服务器。这里要按照你实际的网络配置填哦。弄完之后保存一下,然后在防火墙放通你的端口,一般有两个防火墙需要操作;openwrt防火墙,光猫的防火墙。完成之后就可以下载用户配置文件。然后在你电脑上安装openvpn客户端,导入你刚刚下载下来的配置文件,就能连上你家里的网络了。

搭建openvpn服务器与通过代理转发openvpn流量教程v1.1

正常情况下,到这一步就是完美结束了,但是不可能事事都顺心的。后面就是我自己踩过的坑。

第一个坑。openvpn的路由设置问题,因为我前面vpn服务器推送的路由只有两条内网的,所以vpn流量实际只有访问家里的设备的时候才生效。后来一想,之前教程让我推送这两条路由,那我其他要访问的咋办,所以改了下客户端配置(既你下载下来的配置)。当然你想改哪端都可以,服务器是全局,客户端就自己设备生效。在配置里面加了两条路由。为什么是两条,一开始是加了一条默认路由,0.0.0.0 0.0.0.0 vpn_gateway,加完之后路由表有了,但是不生效,因为还有其他默认路由优先级高,可以调优先级,但是还有一个办法不用调优先级,不如写条比默认路由更精确的,一样会生效。Windows系统的路由表匹配规则是先找是否有更精确的路由,如果有两条一样的路由才比较跃点数(METRIC)。谁跃点数低则优先选谁,下面这两个路由则是替代默认路由的。不需要改优先级就可匹配。客户端修改是这个配置route 0.0.0.0 128.0.0.0 vpn_gateway和route 128.0.0.0 128.0.0.0 vpn_gateway。服务端则是在Client Settings里面加route 0.0.0.0 128.0.0.0和route 128.0.0.0 128.0.0.0 。修改完之后追踪下路由就会发现流量都走vpn了。

第二个坑,vpn冲突导致dns无法解析,改完路由表之后,正常情况下是可以正常使用了,但是依旧打不开网页,检查发现那些域名无法正常解析,我windows解析域名用的还是我公司的dns。发生这种情况是因为我这边的网络环境需要用到公司的vpn,所以导致我自建的vpn跟我工作用的vpn冲突了,关于这个点,我在公司的vpn网卡上面调整了优先级,把公司的vpn由原来的1调整为2之后dns正常了。路径在网卡属性---ipv4协议---属性---高级里面修改,如下图:

搭建openvpn服务器与通过代理转发openvpn流量教程v1.1

完成之后我的vpn就能正常使用了。而且流量都是走vpn了。如果还要细分路由比如国内国外就自行去弄吧。我没啥好的办法,路由条目真的太多了。所以为了方便设置流量都走vpn。

思考延展:

正常到这是完结了,但是稍微发散下思考。我家里是只有ipv6公网的,所以vpn只能用ipv6了。但是我之前教程提过,我租了一台便宜的云主机带公网ipv4的,用于自建moon,那能不能也利于起来呢?我马上就想到反代,利用反向代理,将访问云主机的openvpn的流量,由云主机代理接收,然后云主机将收到的流量转发到我那台openwrt上。这样我的openvpn不就有公网ipv4了吗,最主要云主机之前是自建moon且加入了zerotier这个网络的,所以网络已经打通了。剩下的就是反向代理的配置,安装nginx过程自行百度吧,主要是在/etc/nginx/nginx.conf下写入这个配置(配置在后面贴图了),记得要在http{}下修改。配置里面的listen 是对外端口,如果是udp的话记得在listen 39069后面加 udp。proxy_pass对应的则是你openwrt的zerotier的ip跟端口。端口自行定义哦。弄完之后使用nginx -t检查配置是否ok.然后重启nginx服务。重启服务完之后查看下nginx是否在监听这个端口。然后在云主机防火墙和云控制页面的防火墙放通对应的端口。云主机弄完,轮到openwrt修改配置,第一个协议那里。改为tcp,然后下载配置,下载之后注意哦,用记事本打开你下载下来的配置,修改里面的remote 那行的ip,要改成云主机的,因为对你客户端来说你是连接云主机才对。修改完保存。然后在你客户端试试能否成功连接。

搭建openvpn服务器与通过代理转发openvpn流量教程v1.1

题外话,分享下我openvpn连接遇到故障,是如何逐步排查的。排障前提:将你们的服务端协议选tcp协议。服务端如果从udp修改为tcp之后,客户端也需要同步修改协议。不能是服务端用的tcp协议,客户端用的还是之前的udp协议。先保证两边是同一个协议。如果你不会在客户端修改配置。那就修改完服务端的配置后再下载下来客户端的配置。前提弄完之后开始排障

第一个,连不上,连不上大部分原因是网络不通,先检查电脑到openvpn服务器的网络。在你电脑上telnet ip+端口,ip和端口是你在openvpn服务器设置的,命令参考 telnet 192.168.1.1 1194 。不通先检查openwrt跟光猫的防火墙。如果都有放通,那换个端口再试试。自己电脑是不需要放通端口的。如果是用了反代服务器则是检查两端,一端是在云主机上检查是否通openwrt那侧。另一端在自己电脑上检查是否通云主机。

第二个,连上无法正常上网。到这一步,基本就是路由跟dns的问题,检查自己电脑路由表,使用route print查看路由条目是否有通过服务器或者客户端正常发布下来。如下图第三个则是我openvpn发布的路由。有了路由,还需要用tracert命令检查下路由的下一跳是不是自己的openvpn。查看路由之后检查dns。看下域名是否能正常解析。dns无法解析,检查到dns的网络是否正常。大概能想到的排障就这么多了,后续如果有问题评论区留言,我基本都看。

搭建openvpn服务器与通过代理转发openvpn流量教程v1.1

最后附上成功连接的效果图

搭建openvpn服务器与通过代理转发openvpn流量教程v1.1

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
1评论

  • 精彩
  • 最新
  • 家里只有NAS的情况下如何docker搭建VPN并进行转发上网?目的也是规避公司的限制

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
6
扫一下,分享更方便,购买更轻松