差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
digi:arm-embedded:linux:dey:pvpn [2024/01/20 20:19] robindigi:arm-embedded:linux:dey:pvpn [2024/01/23 11:21] (当前版本) robin
行 3: 行 3:
  
 下面介绍如何编译pvpn支持的DEY系统固件: 下面介绍如何编译pvpn支持的DEY系统固件:
 +
 +假定您的DEY-AIO安装在~/dey-aio下,以原生开发为例,我们先创建一个ConnectCore平台的项目,并编译一个基本镜像:
 +<code>
 +cd ~/dey-aio/dey4.0/workspace
 +mkdir mycc_pvpn
 +cd mycc_pvpn
 +source ../../mkproject.sh -l
 +source ../../mkproject.sh -p <平台名称> 注:根据你的开发板来选择,上一条命令列出所支持的平台
 +bitbake <镜像名>  注:core-image-base 或 dey-image-qt等
 +
 +</code>
 +
  
 1. 开启内核配置选项TUN/TAP设备驱动的支持 1. 开启内核配置选项TUN/TAP设备驱动的支持
  
-默认地,该内核选项是关闭状态,我们需要编译一个本的linux镜像固件(core-image-base或dey-image-qt等),此时该默认的Linux固件并不带TUN/TAP设备驱动支持。我们需要编译内核选项:+默认地,该内核选项是关闭状态,编译出的镜像并不带TUN/TAP设备驱动支持。我们需要编译内核选项:
 <code> <code>
 bitbake -c menuconfig virtual/kernel bitbake -c menuconfig virtual/kernel
行 24: 行 36:
 2. 编译pvpn所需的软件包 2. 编译pvpn所需的软件包
 虽然我们已经编译出修改过内核配置的固件,但该固件并没有带有pvpn所需的相关软件包,我们还需要在conf/local.conf中修入项目配置,将相关的软件包加入: 虽然我们已经编译出修改过内核配置的固件,但该固件并没有带有pvpn所需的相关软件包,我们还需要在conf/local.conf中修入项目配置,将相关的软件包加入:
- 
-默认地,peyoot/pvpn只在ubuntu系统上充分验证过,但您可以通过手工配置,或是使用指定的版本,来实现和pvpn网关服务器连接,从而接入原有的pvpn网络。 
  
 默认地,DEY系统并没有安装好pvpn所需的相关依赖包,您可以在conf/local.conf中添加所需的包 默认地,DEY系统并没有安装好pvpn所需的相关依赖包,您可以在conf/local.conf中添加所需的包
行 47: 行 57:
 </hidden> </hidden>
  
-刷好固件后,进入板子的linux,在/lib/modules/<内核版本号>/kernel/drivers/net下可以看到tun.ko文件。此时lsmod命令并没有该模块,是因为模块还没有触发加载它,可以用mobprobe来测试模块加载。+刷好固件后,进入板子的linux,在/lib/modules/<内核版本号>/kernel/drivers/net下可以看到tun.ko文件。此时lsmod命令并没有该模块,是因为模块还没有触发加载它,当我们开启pvpn的openvpn服务时,该模块会自动加载。
  
-4. 置系统时间+4. 运行pvpn安装脚本 
 +pvpn的DEY版本支持目前仅支持openvpn客户端模式,仅管tun/tap驱动和pvpn相关软件包已经集成在固件中,但此时开启pvpn仍有可能失败,因为TLS的握手对时间同步有较严格的要求,我们需要设好嵌入式板子的系统时间。事实上,如果连接上互联网,DEY本身有NTP同步的功能,只不过默认使用的是google的NTP服务器,因此在国内是无法同步的。不过在在pvpn的安装脚本中,已经将NTP更新为国内可访问的windows的NTP服务器。 只要板子连上互联网,运行pvpn安装脚本,就可以自动同步。
  
-仅管tun/tap驱动和pvpn相关软件包已经集成在固件中,但此时开启pvpn仍有可能失败,因为TLS的握手对时间同步有较严格的要求,我们需要设置好嵌入式板子的系统时间。事实上,如果连接上互联,DEY本身有NTP同步功能,默认地,systemd-timesyncd服务是开启的只是默认的NTP服务器未设置,所以板子使用默认googleNTP服务由于众所周知的原因国内无法成功同步时间。+PVPN需要一台有公IP地址服务器作为服务端请确保您已经在服务端运行pvpn的安装脚本安装好openvpn的服务开放8000和8443端口然后客户端的板子运行:
 <code> <code>
-nano /etc/systemd/timesyncd.conf +install_vpn.sh
-去掉NTP注释,改为: +
-NTP=time.windows.com+
 </code> </code>
-大约两分钟,再检查timedatectl status,就会发现时间同步好了+根据提示输入服务端的IP地址,然后其它选项路回车即可安装好。然我们可以通过date或是timedatectl来检查是否已经更新为正确的时间。
  
-5. 开启pvpn服务 
  
-6禁用某个接口DNS+5开启pvpnopenvpn服务 
 +<code> 
 +systemctl start openvpn-client@client 
 +</code>
  
 +6. 修改某个接口的DNS
 +
 +如果您已经使用pvpn,并且连接上openvpn服务器,但仍然无法ping通google服务器,那么一般是因为您的接口使用DHCP,并且由DHCP获取到了DNS服务器,比如你的内网网关路由器等,而它们则使用运营商的DNS,为了只使用pvpn中openvpn推送的DNS,您需要修改一下接口的DNS。
 +
 +查询当前所有的DNS服务器:
 +<code>
 +systemd-resolve --status
 +</code>
 +设置某个接口的DNS,如wlan0
 +<code>
 +systemd-resolve --interface=wlan0 --set-dns=8.8.8.8
 +</code>