深算工场 云端互联方案(平替Vmware和Virtualbox)

WireGuard避坑指南:5个新手最易踩的雷区(附真实故障排查记录) 本文深度解析了WireGuard组网部署中新手最易踩中的五个关键雷区,包括密钥配对错误、NAT穿透失效、MTU值设置不当、网段冲突以及DNS路由问题。文章结合真实故障排查记录,提供了具体的诊断步骤与解决方案,旨在帮助用户避开常见陷阱,实现稳定高效的VPN连接。 阅读详情

项目地址:
github地址:https://github.com/hwua-hi168/quantanexus
gitee地址:https://gitee.com/hwua_1/quantanexus-docs
公有云版地址: https://www.hi168.com

云端互联

概述

深算工场为了让云端虚拟机和本地环境彻底打通,建立一个VPN虚拟通道,方便用户在本地可以通过SSH等工具直接连接上云端的虚拟机,省去本地安装虚拟机的繁琐过程,推出了云端互联这个重磅功能,特点包括:

  • 本地与云端无缝集成
  • 本地无需安装虚拟机
  • 低配置使用高端集群
  • 平替Vmware和Virtualbox

alt text

WireGuard介绍

使用云端互联需要WireGuard软件,可以帮助用户在本地和云端建立一个虚拟的VPN隧道。下面先来了解一下WireGuard。 ‌WireGuard ‌ 是一个快速、现代且安全的虚拟私人网络(VPN)协议,旨在替代传统的 IPsec 和 OpenVPN 。它利用最先进的加密技术,提供比传统VPN更高的性能和更简单的配置。 WireGuard由 Jason A. Donenfeld 创建并维护。它最初是为 Linux 内核设计的,现已跨平台支持 Windows 、 MacOS 、 BSD 、 iOS 和 Android 等操作系统。WireGuard的核心代码仅四千多 行,被 Linux之父 Linus Torvalds 称为“艺术品”‌。主要特点如下:

  • 高性能‌:WireGuard使用极高速的加密原语,适用于需要高速连接的场景,如远程工作、游戏和视频会议等‌。
  • ‌安全性‌:它采用先进的加密技术,如 ChaCha20 、 Poly1305 和 BLAKE2 ,确保数据传输的安全性‌。
  • ‌易用性‌:配置简单,类似于交换SSH密钥的过程。用户只需交换公钥即可建立连接,无需管理连接或关注状态‌。
  • ‌跨平台支持‌:可以在多种操作系统上运行,适用于不同的设备和场景‌。
  • ‌轻便和高效‌:以UDP协议传输数据,资源占用小,适合嵌入式设备和移动设备‌。

alt text

两种进入云端互联的方式

小伙伴们  可 以 注 & 册 https://www.hi168.com 白 & 飘  算 & 力哦。

单客户端

大部分用户基本采用本地的Windows或Mac操作系统作为客户端进行云端互联,这里我们以Windows为例,介绍一下云端互联的流程。

1、打开云端互联

我们点击进入云端互联,弹出一个通知,提示云端互联的网段重新规划了一下,提示在2025年5月30日之前使用的云端互联会有影响,这里建议先删除原有的客户端,全部清空,保持下图的初始状态。

alt text

2、开通云端互联

(1)点击"开通云端互联",需要等待40~60秒左右的时间。

alt text

(2)开通成功后,云端互联状态显示"云端网关已就绪",并自动分配了云端互联的网段。同时,在云端互联客户端列表中,自动增加了一条客户端记录,信息包括客户端名称、客户端地址、允许IP和动作。其中,客户端地址是系统自动分配的IP,用于客户端去连接云端的虚拟机,允许IP是允许通过的指定网段流量,可以有多个,在同一个个人空间中,我们使用默认的,不用去编辑修改的。

alt text

(3)下载WireGuard

我们先点击"详情",再点击"下载WireGuard客户端",选择对应的操作系统版本,即可下载WireGuard的安装包,这里我们以Windows为例。

alt text

(4)安装WireGuard

正常下载下来的"wireguard-installer.exe"安装包,进行安装即可。

alt text

安装成功且运行的WireGuard界面。

alt text

(5)下载WireGuard配置文件

使用WireGuard云端互联,必须要导入配置文件,我们先将配置文件下载下来。

  • 方式一:直接点击"下载",将文件类型为conf的配置文件下载到本地(第二次以后下载可以一直使用此种方式)。

alt text

  • 方式二:先点击"详情",再点击"下载WireGuard配置文件",保存到本地即可。

alt text

(6)WireGuard导入配置文件(文件名也可以修改,这里按默认文件名)

  • 方式一:点击"从文件导入隧道"。

alt text

找到下载的配置文件,点击"打开"导入即可。

alt text

成功导入配置文件。

alt text

  • 方式二:点击"新建隧道"导入配置文件

alt text

(7)本地连接云端的虚拟机

我们先打开本地的命令终端,去ping一个云端虚拟机的IP,当前是无法ping通的,也是就无法进行云端互联。

alt text

(8)WireGuard进行连接

我们点击"连接",既可连接上云端的网关。

alt text

有接收和发送流量表示已通。

alt text

WireGuard提示已连接。

alt text

本地命令终端执行命令"ipconfig",可以看到多了一块WireGuard的网卡,IP就是之前云端互联分配的客户端地址。

alt text

此时就可以ping通云端虚拟机的IP了,表示云端互联成功了。

alt text

3、云端互联不通的问题处理

在实际的环境使用中,由于每个用户的本地系统情况不同,可能会导致云端互联不通,那么我们可以作如下的处理。

(1)确保关闭本地操作系统的防火墙。

alt text

(2)断开并退出WierGuard,重新启动WireGuard连接。

(3)在任务管理器中彻底杀掉WireGuard进程,然后重新启动WireGuard连接。

alt text

多客户端

云端互联可以创建多个客户端,可以是不同的操作系统终端,比如:Ubuntu、CentOS、MacOS,或者其它任何的智能终端,只要在客户端安装WireGuard,和云端打通VPN隧道,就可以实现万物互联。下面我们就以Ubuntu和CentOS作为两个不同的客户端来进行云端互联。

1、准备环境

(1)首先,我们需要再新建两个客户端,分配两个不同的IP地址,用于Ubuntu和CentOS。新建完毕后,将两个客户端对应的WireGuard配置文件下载到本地,后面要分别上传到Ubuntu和CentOS中。

alt text

(2)然后,我们在本地Windows系统中使用VMware启动两个虚拟机,分别安装了Ubuntu和CentOS两种操作系统,这里的环境已经准备好了。

  • Ubuntu: 这里以Ubuntu 22.04为例,虚拟机IP:192.168.81.130

alt text

  • CentOS:这里以CentOS 8.5为例,虚拟机IP:192.168.81.129

alt text

(3)为了使用方便,我们利用SSH客户端分别连接到这两个虚拟机,如下。

alt text

alt text

下面我们就来具体介绍一下如何在Ubuntu和CentOS中使用WireGuard。

2、Ubuntu使用WireGuard

(1)Ubuntu中任何版本安装WireGuard很简单,执行如下命令即可。

apt install wireguard -y

alt text

(2)安装成功后,在/etc目录下面会自动新建一个wireguard目录,然后将之前下载的配置文件(客户端IP:10.255.248.3)上传到/etc/wireguard目录中。

alt text

(3)启动WireGuard连接,执行如下命令。

wg-quick up hi168ns1000c924

alt text

(4)查看WireGuard连接状态,执行如下命令。

wg

alt text

此时,多了一块WireGuard网卡。

alt text

(5)ping一下单客户端中使用的虚拟机IP(10.160.2.100)和分配的客户端911的IP(10.255.248.2)

alt text

alt text

全部可以互通。

3、CentOS使用WireGuard

(1)由于WireGuard在CentOS的安装,对于内核版本比较高,CentOS 8.5及以下的内核版本比较低,需要额外安装内核的升级组件,安装命令如下。

yum install yum-utils epel-release -y
yum-config-manager --setopt=centosplus.includepkgs="kernel-plus, kernel-plus-*" --setopt=centosplus.enabled=1 --save
sed -e 's/^DEFAULTKERNEL=kernel-core$/DEFAULTKERNEL=kernel-plus-core/' -i /etc/sysconfig/kernel
yum install kernel-plus wireguard-tools -y
reboot

(2)安装完毕要重启一下虚拟机,我们按此命令执行即可。安装成功后在/etc目录下自动生成一个wireguard的目录。

alt text

(3)将之前下载的配置文件(客户端IP:10.255.248.4)上传到/etc/wireguard目录中。

alt text

(4)启动WireGuard连接,执行如下命令。

wg-quick up hi168ns1000c925

alt text

(5)查看WireGuard连接状态,执行如下命令。

wg

alt text

此时,多了一块WireGuard网卡。

alt text

(6)ping一下单客户端中使用的虚拟机IP(10.160.2.100)和分配的客户端911的IP(10.255.248.2)及客户端924的IP(10.255.248.3)

alt text

alt text

alt text

全部可以互通。

(7)CentOS由于8.5及之前的版本不进行维护了,新的官方维护的版本从 CentOS Stream 9开始,因此在不同版本中安装WireGuard是有区别的。

  • 在CentOS Stream 9及以后的版本中安装WireGuard
yum install epel-release -y
yum install wireguard-tools -y
  • 在CentOS 7中安装WireGuard
yum install yum-utils epel-release -y
yum-config-manager --setopt=centosplus.includepkgs=kernel-plus --enablerepo=centosplus --save
sed -e 's/^DEFAULTKERNEL=kernel$/DEFAULTKERNEL=kernel-plus/' -i /etc/sysconfig/kernel
yum install kernel-plus wireguard-tools -y
reboot
4、MacOS使用WireGuard

(1)我们准备一个MacOS,并打开命令终端,这里通过SSH连接到MacOS,如图。

alt text

alt text

(2)在MacOS中通过如下命令安装WireGuard。

brew install wireguard-tools

alt text

(3)WireGuard安装成功后,在/usr/local/etc目录下面会自动新建一个wireguard目录。

alt text

(4)在云端互联页面中新建一个客户端940(10.255.248.5),并将此客户端的配置文件下载到本地,同时上传到MacOS的/usr/local/etc/wireguard目录下。

alt text

alt text

(5)启动WireGuard连接,执行如下命令(需要输入root密码)。

wg-quick up hi168ns1000c940

alt text

(6)查看WireGuard连接状态,执行如下命令。

sudo wg

alt text

此时,多了一块WireGuard网卡。

alt text

(7)ping一下单客户端中使用的虚拟机IP(10.160.2.100)、分配的客户端911的IP(10.255.248.2)、客户端924的IP(10.255.248.3)和客户端925的IP(10.255.248.4)

alt text

alt text

alt text

alt text

全部可以互通。

【WireGuard/虚拟局域网/联机/低成本】使用WireGuard组建虚拟局域网联机的低成本可行方案 本方案适用于本地服务器,公网服务器只做流量转发。配置完成后可将异地的朋友组在同一个局域网下,效果和面对面联机是一样的。价格方面,截至到2024-3-25,腾讯云按量计费,选最便宜的cpu和20G硬盘,16Mbps公网带宽情况下,使用费用一小时0.07元,流量费用0.8元/GB。cpu费用可以在不玩时将服务器关进一步节约成本,需要注意,硬盘费用是需要24h收取的,即使在关机情况下,其费用包含0.07元/h中的0.2元/h,也就是一个月完全关机的固定的14元左右的费用。 阅读详情

相关推荐

WireGuard排除私网地址聚类表(掩码形式)

其中:AllowedIPs = 这个后面的IP地址,是指需要走隧道的流量的目标网段,它是以【IP/掩码】形式写的。如果目标网段是这几个地址段,倒是好写,那么反过来,要排除这些网段,咋办。算了好半天,不容易。至于用途,懂的就随缘。如果谁有更好用的地址段集,看能不能也分享一下。附上表格计算过程,有兴趣自行查看。我的方法比较笨,如果有更好的方法的,也欢迎留言讨论。当然还有169.254.x.x这个范围也不属于公网能够路由的地址。A类地址:10.0.0.0/8。,那么要怎么写这个地址段呢?

zhangzhibo921的博客 2572

WireGuard 全互联模式终极指南(上)!

大家好,我是米开朗基杨。关注我的读者应该都还记得我之前写过一篇 ????WireGuard 全互联模式 (full mesh) 的配置指南,限于当时还没有成熟的产品来帮助我们简化全互联模式的配置...

云原生实验室 7387

wireguard-windows:用于Perimeter81的Wireguard Config Generator

适用于Windows的Perimeter81 Wireguard Config Generator 如果客户选择使用Windows机器作为其Wireguard连接器,wireguard配置生成器将帮助构建所需的配置文件以方便导入,并且还将确保在Windows中启用了IP转发。 当前仅在Windows 10 1909上进行了测试 注意:此脚本需要Windows注册表访问权限才能启用IP转发(IPEnableRouter注册表项)。 需要重启 1.下载并安装适用于Windows的Wireguard 或在此存储库中使用随附的wireguard-installer.exe,但是它可能不是最新版本 2.从工作空间获取配置文件: 单击您的线卫隧道,转到“配置” 仅将https链接部分复制到剪贴板(“ curl -s”之后和“ | sudo bash”之前的所有内容) 将其粘贴到Web浏览器中

阿里云安装mikrotik7配置内网互通

阿里云近期推出了200M不限量机器,对于没有公网接入的中小企业可以借助这个机器对多地分支机构进行内网互通。目前已经有很多机构用这个搞跨云k8s,跨云集群了。mikrotik作为一个商用的软件,操作性比一些开源的软件好用不少。本文使用的网段为172.16.105.0/24,可根据需要进行修改。

gsls200808的专栏 2488

wireguard-configure:Wireguard的命令行配置管理

线卫配置 wireguard-configure是一个命令行实用程序,可帮助管理Wireguard配置。 它假定一个基本设置,其中一个节点充当“路由器”,并且有多个客户端在中央路由器节点之间连接和路由通信。 它允许您生成和转储Wireguard配置以及bash脚本,这些脚本还配置接口和路由。 您必须具有可通过路径访问的命令行工具wg 。 这用于自动生成专用/公用线卫密钥。 配置存储在yaml中,可以从命令行修改,也可以直接在yaml文件中进行修改。 $ wireguard-configure --help wireguard-configure 0.0.1 Alex Eubanks <endeavor> Simple wireguard configuration USAGE: wireguard-configure [FLAGS]

wg-manager:易于使用的WireGuard仪表板和管理工具

wg-manager wg-manager提供了易于使用的图形化Web界面,用于导入,设置和管理WireGuard服务器。 wg-manager的功能包括: 服务器 IPv4和IPv6支持 创建/删除/修改 启动/停止/重启服务器 导入现有配置 导出服务器配置以及客户端配置为zip。 同行 创建/删除/修改 带宽使用情况统计 通过QRCode,文本导出 通过API密钥进行身份验证以实现自动化(在GUI中创建) 使用Docker自动设置 一般的 修改管理员用户 创建和管理API密钥 依存关系 Linux内核> = 5.6 (或者:wireguard-dkms) 常见安装步骤 启用IP转发: sysctl -w net.ipv4.ip_forward=1 # IPV4 Support sysctl -w net.ipv6.conf.all.forwarding=1 # IPV6

SD-WAN——使用WireGuard与ipv6实现高速免费异地组网

在本文中,通过免费的WireGuard与IPv6,再结合价格低廉的路由器完成了主机到主机,网段到网段的组网,算是SD-WAN组网的一种实践与体验。从本文也可以看出,WireGuardIPv6这种组网方式对于各种组网场景几乎都能应对,与高昂的专线组网相比,这种方式的组网也带来了极大的便利性。网络真奇妙,为WireGuard与各大运营商。

水中加点糖 1万+

别再瞎试了!用Python+正交设计,5分钟搞定你的多因素实验方案

本文介绍了如何利用Python和正交设计高效优化多因素实验方案。正交设计通过精心设计的正交表,用最少的实验次数覆盖所有因素的水平组合,显著提升实验效率。文章详细讲解了正交设计的核心优势、Python实现工具链、实验实施与数据分析方法,以及高级技巧与常见问题解决方案,帮助读者快速掌握这一强大的实验优化技术。

weixin_42526087的博客 336

自建 DERP 中继服务器,从此 Tailscale 畅通无阻

原文链接???? https://fuckcloudnative.io/posts/custom-derp-servers/????上篇文章介绍了如何使用 Headscale 替代 Tailscale 官方的控制服务器,并接入各个平台的客户端。本文将会介绍如何让 Tailscale 使用自定义的 DERP Servers。可能很多人都不知道 DERP 是个啥玩意儿,没关系,我先从中继...

云原生实验室 1万+

Omnibox 2.11 NAS部署指南:家庭影音中枢的轻量化落地实践

家庭影音平台本质是本地化内容调度中枢,其核心在于聚合NAS媒体库、统一管理直播/IPTV/音频/视频等多源内容,并通过智能元数据匹配与硬解加速实现零门槛播放体验。技术原理上依赖Java轻量Web容器(Jetty)、SQLite嵌入式数据库双缓存架构,以及宿主机FFmpeg动态链接与HTTP/2直播代理治理能力。该方案显著降低4K播放卡顿、EPG加载失败、海报缺失等高频问题,适用于群晖、飞牛、绿联等主流NAS设备,尤其适配ARM64芯片与Realtek网卡等国产硬件生态。本文聚焦Omnibox 2.11在真实

weixin_30846347的博客 471

暗月项目七详解

本文围绕“暗月靶场项目七”展开,记录了一次从外网 Web 入口逐步深入内网并最终获取域控目标的完整实训过程。

Re_K123的博客 419

使用 WireGuard 组建非对称路由以降低延迟

❝本文转自遨游者的博客,原文:https://aoyouer.com/posts/wireguard-asymmetric-routing/,版权归原作者所有。欢迎投稿,投稿请添加微信好友:cloud-native-yang❝方案二个人感觉是一个更好的配置方案,并且其中的 wireguard 配置方式也在方案一中使用,步骤更简洁明确一些。所以推荐没有耐心看完的同学直接看方案二。奇怪的环境产生奇怪的...

云原生实验室 2628

opencv读取海康威视摄像头相关配置

1、开发环境 海康威视的网络摄像头使用: 开发工具:vs2015 C++ 海康SDK 2、相关操作 下载海康威视SDK:网址:http://www.hikvision.com/cn/download_61.html • 1:对照自己的开发平台可以下载设备网络SDK_Win32设备网络SDK_Win64,解压到本地文件下: • 2:VS配置 、Opencv配置。参考址 http://blog.youkuaiyun.com/poem_qianmo/article/details/19809337 (建议自己创

HMJ115的博客 985

乌班图22.04安装wireguard实现异地组网

虚拟机可以通过路由开启端口转发,把51820映射一下,就可以通过外网访问家里的局域网了,不过感觉还是开个虚拟机太浪费了,再折腾一下,看看能不能直接装进低版本群晖里。

只会写bug的靓仔的博客 6801

Android14 RK3576开发板有线网卡静态IP配置全攻略(附数据库修改详解)

本文详细介绍了在Android 14 RK3576开发板上实现有线网卡出厂默认静态IP配置的完整方案。通过深入修改系统源码和SettingsProvider数据库,扩展全局设置字段并注入默认值,确保设备首次启动即自动应用预设的IP地址、子网掩码、网关和DNS,适用于工业控制、数字标牌等批量部署场景,有效提升生产效率。

weixin_29253711的博客 608

【推荐100个unity插件之24】实现2d交互式草树叶和随风飘动的效果——pixelgraphics插件

【推荐100个unity插件之23】实现2d交互式草树叶和随风飘动的效果——pixelgraphics插件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1683

记录 | 基于WireGuard实现的内网Web服务穿透至外网

通过WireGuard实现的异地组网,实现了不同地域、不同网络、网络类型不相同的云服务器,实现互联。在此基础上,实现家中部署在内网环境中的Web服务穿透至外网以供其他人正常使用。

qq_37283976的博客 1952

遇到一个诡异的WiFi网络问题:同一个办公室苹果电脑上不了网,其他电脑都可以

先来把问题掰开揉碎地看清楚:在一个普通的办公室WiFi网络中,所有设备——Windows电脑、安卓手机、甚至是那台老旧的Linux服务器——都能正常联网,唯独苹果电脑(可能是MacBook、iMac或者Mac mini)像被下了魔咒一样,连不上网。这种情况不仅让人抓狂,还透着一股神秘感。为什么偏偏是苹果电脑?难道WiFi路由器对苹果有“偏见”?这些症状都指向一个核心问题:苹果电脑与办公室WiFi之间,似乎存在某种“沟通障碍”。但这障碍到底出在哪里呢?是苹果电脑自己的问题,还是网络设置在“针对”它?

网络技术联盟站 842

使用wireguard+frp实现内网穿透远程桌面

wireguard+frp实现内网穿透远程桌面

xxxxssss12的博客 7883

高德地图API如何使用

通过以上步骤,您可以成功接入并使用高德地图API来为您的应用添加丰富的地图功能。

QQ_778132974的博客 4787

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C语言中的类型限定符、volatile、restrict以及_Atomic限定符

目录 1.2volatile限定符 1.3restrict限定符 1.4 _Atomic限定符 1.5 本章小结 1.2volatile限定符 volatile在英语中的意思是“不稳定的”,“易变的”,“易挥发的”。C语言用volatile限定符修饰一个对象时,指明该对象的值可能会被异步修改,这暗示了编译器不要对该对象做寄存器暂存优化,在读写它的时候总需要显式地从它的存储器地址中获取值。一般而言,C语言实现会将一个函数中多次出现的同一对象的值尽可能地存放在寄存器中,如果该对象的内容可以存放.

Actir的博客 2367

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【wireguard-go】nat处理上下行数据及checksum计算分析

在处理NAT时,IP地址的改变会影响基于IP地址的校验和字段,如TCP/UDP的传输层校验和。为避免重新计算整个数据包的校验和,可以使用增量校验和算法(NAT网关通过修改数据包中的IP地址(只修改了源 ip)来实现内部网络与外部网络的连接。),只更新地址变化的部分,大大降低了计算开销,提高了效率。

weixin_41578517的博客 1378

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

OpenWrt 安装 WireGuard

安装以下步骤安装中文包和其他软件包搜索 (luci-i18n-base-zh-cn)包重启OpenWrt生效为 wg 接口配置“私钥”、“公钥”、“监听端口”、“IP 地址”。如果你已经有准备好的“私钥”、“公钥”,则直接粘贴进去即可。如果没有,则可以点击界面上的“生成新的密钥对”按钮,会自动随机生成密钥并填充。监听端口:按需自定义一个公网能访问的端口号。

weixin_42562106的博客 1万+

把散落在世界各地的机器连成一个内网:WireGuard 跨地域虚拟组网实战(多节点、路由、NAT 穿透与密钥管理)

写到第五十六篇,我手上已经有七八台机器散在不同机房:香港、日本、新加坡、韩国、美西、巴西、荷兰、迪拜……在旧机器上加新机器的 SSH 公网 IP;开防火墙对应端口;配 rsync / Prometheus / Loki 抓取规则;备份脚本里再加一条 IP;机器换 IP 时,上面所有地方全部改一遍。到第七台的时候我实在忍不了了。这些机器对外服务各不相同,但‌它们彼此之间一直在对话‌:日志要往中心发、备份要跨机拷、Prometheus 要抓各节点指标、SSH 跳板要能通所有机器。

snysy的博客 346

WgServerforWindows:在 Windows 上跑 WireGuard 服务器,没那么难

WgServerforWindows 这个项目做的事,就是把这些复杂操作打包成一个桌面应用,点点鼠标就能搞定。总的来说,这个项目适合想在 Windows 上快速搭 WireGuard 服务器,又不想折腾命令行和注册表的人。应用会自动下载最新版 WireGuard for Windows 并安装,装完之后也能直接在应用里卸载,不用去控制面板找。需要注意的是,服务器的网络范围不能和宿主机的 IP 或局域网冲突。这个应用把 WireGuard 服务器的搭建流程拆成了几步,每一步都有对应的界面操作。

chaoyuedev972的博客 1381

Wireguard使用注册方法

c.输入"运用程序+register "(出现Successfully created cloudflare warp account时表示成功)3.返回下载的Windows目录修改一下刚刚注册的文件,修改完后保存退出。4.输入命令"运行程序+update ",然后再生成配置文件。2.下载后打开CMD,要用管理员权限打开。-b.cd windows下载目录。-a.打开自己所下载的软件的目录。5.修改配置文件中的ip地址和端口。6.下载Wireguard。(下载地址其他博主的)-b.修改为优选IP。

2301_79321458的博客 1611
上一篇: 深算工场 K8S安装[基于ContainerD]方案
下一篇: 释放 GPU 性能:CUDA 中的全局内存访问
quantanexus深算工场
博客等级 码龄1年 7粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值