家庭透明代理网络的规划与部署
前言随着时间的推移,家里的网络设备越来越多,各种智能家居、手机、电脑、NAS 混杂在一个网段里,既不安全也不方便管理。再加上访问外部网络的需求,是时候重新规划一下家庭网络架构了。 本文记录我将家庭网络重构为基于 VLAN 的双网络架构的全过程。核心目标是实现直连网络与代理网络的彻底分离:让需要访问外部网络的设备走代理,让普通设备直连上网,两者通过不同的 SSID 自动接入对应网段,同时保持内网设备之间的互通。这一设计从最初就将高可用性和易用性放在首位——当代理服务出现故障时,只需一键切换 WiFi 即可恢复上网,无需任何繁琐的配置调整。文章将详细介绍网络拓扑设计、路由器配置、透明代理实现等内容。 网络架构设计整体拓扑重构后的网络采用三层架构: 123456789101112131415161718192021222324 [互联网] │ ▼ [光猫] ──→ VLAN 2 (PPPoE) ...
使用透明代理和BBR加速Wireguard中的TCP连接
前言众所周知,wireguard工作在IP层,直接转发IP数据包。网络上的wireguard部署教程通常基于iptables的nat功能,但这样部署的服务器在网络质量较差时无法达到较快的TCP连接速度:因为直接转发IP数据包的工作模式下,tcp拥塞控制是源服务器和客户端控制的,wireguard只扮演数据包转发角色。 找遍了全网也没找到怎么解决,于是动脑尝试解决一下。 透明代理https://en.wikipedia.org/wiki/Proxy_server#Transparent_proxy 透明代理是一种简单拦截应用层数据的方式。在本文中,我使用透明代理拦截经过wireguard的tcp数据包,使他通过系统TCP协议栈,从而可以获得BBR拥塞控制的好处。 配置路由表和iptables以下是根据V2ray中透明代理教程修改而来的配置 123456789101112131415# 将进入透明代理的流量转发到loip rule add fwmark 1 table 100 ip route add local 0.0.0.0/0 dev lo table 100ip -6 rul...
校园网Wireguard-我有特别的部署方案
前言为什么说我有特别的部署方案呢?是因为我所在的学校网络架构比较复杂,请看下面的图片 我的目标是要让我的设备可以使用工作室网络上网,且不需要认证。 我们学校使用的是锐捷认证,且一个账户最多只能登录两个设备。而我有两个手机一个平板一个笔记本,而且还有几个虚拟机需要网络;另一个原因是我不想交网费(工作室网络可以免费用) 经过实验发现我们学校未认证的设备可以无障碍以UDP协议访问53端口,正好可以在这个端口上运行Wireguard服务。 除此之外我还想访问工作室内未经过认证的设备,比如打印机。 虚拟机系统我使用Oracle Linux,这是一个RHEL的替代品,他和RHEL完全兼容。版本: Red Hat Enterprise Linux release 8.6 (Ootpa) 开始之前,如果你需要一些小工具可以添加epel源 1yum install epel-release -y NAT模式的IPv4上网配置路由配置两个接口的ip地址和链接位置上面已经给出,他们通过服务器网口桥接到交换机上,除此之外还需要调整路由表: NetworkManager配置大致如下(已经省略IPV6部分...
Clash-tun模式配置指南
Clash大家一定都不陌生。Clash提供的大量丰富的网络功能可以为上网提供定制化的良好体验,其中tun模式就是特色之一。 本文将会详细说明如何在Linux和Windows平台上手工配置tun模式。也许你已经在使用Clash for Windows,手动配置是因为我并不喜欢cfw那样的工具,我更喜欢纯粹一点的工具。 什么是tuntun是操作系统上的一种虚拟网络设备,可以让用户处理网络中的三层数据包(例如IP包)。 与此差不多的还有tap,但tap处理的是二层数据包。 只处理三层数据包这就决定了tun性能往往比tap要好一些。 在Windows平台下,系统内核并不默认提供tun功能,需要安装 Wintun 这个第三方驱动才能支持 在Windows下配置Clash的tun模式首先当然是下载Clash,需要注意的是Clash有标准版和高级版,tun模式只在高级版提供。下载地址 下载之后解压,并将上面下载好的Wintun.dll和clash的可执行文件放在一起。需要注意的是程序位数必须相同。 编写配置文件也许你已经有了一个配置文件,那就先说明启用tun模式需要添加的内容 1234567t...
在WSL2的Ubuntu里配置systemd
在WSL2里,Linux发行版默认是不配置systemd的。但是很多东西都需要这个服务,例如Docker。本文将会演示如何配置Ubuntu 20.4下的systemd 安装开启需要的软件得益于genie项目,在WSL2启动systemd成为了一件比较简单的事情 确认版本输入下面的命令确认你在用wsl2 1wsl -l -v 如果显示下面的结果就是wsl2 如果显示的是1的话,使用下面的命令变成wsl2 1wsl --set-version Ubuntu 2 安装软件进入WSL,输入下面的命令添加软件源并安装genie 1234567891011wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpgchmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpgcat << EOF > /etc/apt/sources.list.d/...
充分使用Colab的免费TPU
前言好久不见!这几天虽然放假在家,但是各种事情还是非常多,忙里偷闲做了一个给动漫图片添加tag的神经网络模型。因此写下这篇文章来记录一下过程。 给动漫图片添加tag属于多标签分类问题:一张图片可以有多个标签。 这类问题不能简单使用准确率来判断模型的性能,因此我用通过召回率和精确率进行计算的F1值来评价模型的性能。 最终结果:模型在 danbooru网站上的20万张图片上进行训练,能够在470个tag中选择图片合适的tag,F1值达到0.8。 在训练时我们使用了 Google Colab平台的TPU,选择这个方案的原因是他的速度确实比Colab上的GPU快很多。 项目详细网络设计根据这类问题的特性:一张图片可能会有多个标签,因此不可以使用 softmax激活函数来作为模型输出层的激活函数。如果要列举每一种可能的标签组合来使用 softmax的话,那输出层的大小是不可以接受的。因此使用 sigmoid激活函数 我们的网络基于 ResNet50,但对输出层进行了一些更改。下面是网络结构 12345678base_model = keras.applications.resnet.Res...
在STM32CubeMX中正确重定向stdio
前言这看似是一篇烂大街的文章,但其实并非如此。 本文使用的环境非常特殊:STM32CubeMX + Clion 项目配置本项目使用STM32F411CEU6,项目配置如下 项目代码生成配置使用STM32CubeIDE 测试代码 123456789101112/* USER CODE BEGIN WHILE */ char hal_msg[] = "This is send by HAL\n"; while (1) { printf("HelloWorld\n"); HAL_UART_Transmit(&huart1,hal_msg,strlen(hal_msg),0xffff); HAL_Delay(1000); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } 网络上的方案先来尝试第一个方案 12345int fputc(int ch,FILE *f){ HAL_UART_Transmit(&hua...
使用TensorFlow快速实现图片分类
前言现在网络上深度学习非常热门,同时深度学习的门槛也越来越低。在TensorFlow中也提供了一些非常简单的方式让初学者甚至是没有接触过深度学习的小白都能快速上手 本文通过一个简单的图片分类例子来演示一下如何快速使用TensorFlow搭建完成目标 由于一些小型数据集(例如MNIST)不能表现出实际训练中遇到的一些问题,本文使用Kaggle上的nsfw-images-data 数据集来制作一个图片分类Bot,(实际使用案例 https://mirai.mamoe.net/topic/694 ) 安装自己去看另一个文章 数据的加载和预处理在TensorFlow的官方快速上手教程里,数据集将直接完全载入到内存中。但对于本文的 30GB 大小的数据集来说这完全不限时。只能依靠tf.data提供的数据加载流水线完成数据的预加载和处理。 使用TensorFlow提供的数据加载处理流水线还有一个好处:它能够绕过Python GIL的限制来加速数据读入和处理,这可以保证在任何时候io和预处理都不会成为影响训练时间的瓶颈 处理标签 数据集已经做好了测试集/训练集的划分,图片总共有五个分类。我们需...
一加wifi嗅探功能解析和利用
今天无聊在手机上翻了一下开发者选项,无意中发现测试功能里面有一个叫WiFi嗅探的功能。听到Wifi嗅探的功能我的第一反应就是曾经使用抓包的方式可以破解WEP加密。或者是抓取公开wifi的网络流量。 大部分关于嗅探的教程都是需要购买特定型号的无线网卡的,但一加手机的开发者选项里面居然有这个功能,这么好玩的功能当然是要试试看了。 输出文件是pacp格式,复制到电脑上可以用Wireshark打开看到802.11数据包 既然一加是高通Soc,那其他的高通Soc手机能否使用这个功能?这个功能如何使用命令启动?这便是这篇文章的目的 从这个应用开始既然这是从一个测试APP找到的,那么自然从这个app入手了。使用adb找到当前activity,然后将该程序的apk复制到电脑使用jadx打开 打开后,一眼就找到了一个叫做WifiSniffer的类 然后找到了下面的代码 1234567891011121314151617private void setSnifferEnabled(boolean z) { if (z) { Log.i(&qu...
关于Pixiv和SNI的那些事
最近突然想要爬取pixiv的一些图片。于是就有了这篇文章 问题最开始我使用了 https://github.com/upbit/pixivpy 项目来尝试访问API。我的服务器在国内,因此需要绕过sni检测才能访问pixiv的服务器。 当我正准备开始写代码的时候,我发现该库的绕过sni功能已经失效了。无奈就只好自己写一个。于是就有了这篇文章。 既然是自己写的话,看隔壁的 https://github.com/Mikubill/pixivpy-async 迟迟没有更新关于SNI的东西,那就基于aiohttp做一个吧 调查问题查找资料可以得知Pixiv的屏蔽方式是DNS和SNI。此外找到了SNI的解决方式是只需要不发送SNI就行 实现一个安全的DNS解析器翻阅资料,aiohttp可以自定义域名解析器。参考了aiohttp内置的代码和pixivpy之后写了个使用cloudflare的doh域名解析器 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515...
