分类 全部文章 下的文章

Routeros 配置WireGuard

Routeros在2019年下半年发布了V7的beta版,我在之前文章一直在更新beta版新特性。2020年6月routeros v7beta7系统内核升级到5.6,8月发布了Routeros v7.1 beta2增加了对WireGuard的支持。
WireGuard被视为下一代VPN隧道协议,是类似于gre、ipip隧道的无状态VPN隧道,基于UDP协议,配置简单。

由于Routeros V7还在beta阶段,webfig和winbox等UI控制台还存在很多不完善的地方,下面通过命令行配置。
以下配置基于Routeros V7.1beta2 CHR版。

简单介绍一下拓扑,routeros作为唯一路由器,新建两个wireguard接口:wg-access和wg-hk,wg-access用于手机、PC等在非本地网络下的远程接入,wg-hk用于连接香港VPS用于加速访问境外地址。

本地lan的地址是192.168.1.1/24,wg-access地址是10.0.0.1/24,wg-hk的地址是10.0.1.1/30,手机wireguard的地址是10.0.0.2/32,笔记本电脑的地址是10.0.0.3/32
香港wg0地址是10.0.1.2/30

通过ssh连接routeros或者webfig、winbox的terminal输入命令。
1,wg-access
新建本地routeros的wg-access接口,注意mtu要改成1500,默认是1420,输入下面新建接口命令后会自动创建接口的private-key和对应的public-key

/interface/wireguard/add name="wg-access" mtu=1500 listen-port=50000

给本地routeros的wg-access接口配置IP地址

/ip/address/add address=10.0.0.1/24 interface=wg-access

添加wg-access接口下的客户端peers,注意下面的public-key和preshared-key替换成实际的key,客户端的key在新建空隧道时会自动生成

/interface/wireguard/peers/add interface=wg-access public-key="lYVc...AlE=" allowed-address=10.0.0.2/32 preshared-key="93E...PSA="
/interface/wireguard/peers/add interface=wg-access public-key="lYVc...AlE=" allowed-address=10.0.0.3/32 preshared-key="93E...PSA="

2,wg-hk
新建本地routeros的wg-hk接口

/interface/wireguard/add name="wg-hk" mtu=1500 listen-port=10000

新建香港VPS上routeros的wg0接口

/interface/wireguard/add name="wg0" mtu=1500 listen-port=10000

在香港routeros的wg0接口下添加peer

/interface/wireguard/peers/add interface=wg0 public-key="lYVc...AlE=" allowed-address=10.0.1.1/30 preshared-key="93E...PSA="

给香港routeros的wg0接口配置IP地址

/ip/address/add address=10.0.1.2/30 interface=wg0

在香港routeros上添加本地lan的路由

/ip/route/add dst-address=192.168.1.1/24 gateway=10.0.1.1

在本地routeros的wg-hk接口下添加peer

/interface/wireguard/peers/add interface=wg-hk public-key="lYVc...AlE=" endpoint=香港VPS的公网IP:10000 allowed-address=0.0.0.0/0 preshared-key="93E...PSA="

给本地routeros的wg-hk接口配置IP地址

/ip/address/add address=10.0.1.1/30 interface=wg-hk

配置本地routeros的策略路由
参考Routeros V7配置策略路由routeros配置vpn分流大陆ip

关于routeros的wireguard的说明
1,mtu要修改成1500,使用默认的1420时会有部分cdn不能加载,现象是浏览器报超时错误。mtu问题类似情况参考ikev2 客户端mtu引起的网络故障
2,wireguard每个接口有个自己的公钥对应的路由表,配置peer就是写路由表,routeros v7.1beta2目前有bug,配置多个相同路由的peer,删除后配置的不会恢复之前的路由。
3,routeros v7.1beta2的全局路由表和wireguard的路由表可能存在某些bug,如果配置后不生效,可以删除peer后重新添加。

松下加湿器FE-KXP23开箱及冷蒸发型加湿器对比

北方每年10月开始一直到次年4月空气就变得异常干燥,对于鼻炎患者异常难受,一个好的加湿器就变得异常重要。

这里首先普及一个湿度的基本知识:空气含水量与空气温度和气压有关系,一般空气压力变化不大,可以只关注空气温度,比如标准大气压下,10度时50%的相对湿度的空气含水量是4.7克/立方米,而25度时50%的相对湿度的空气含水量是11.5,二者空气含水量相差巨大。

几年前经过了解知道了超声波方式加湿的危害,也知道了蒸发式加湿器,然后就入了米家的智米加湿器,这个加湿器是通过多层水车方式把水从水箱带出来,然后风扇吹过,水分从水车上蒸发随气流吹出。原理简单,缺点是加湿量太小,只有250ml/h,2019年小米好像推出了升级款,通过加热进入机器的空气,提高出风口的湿度,加湿量达到600ml/h。智米加湿器入手价格350,现在日常价格400。加湿量太小不推荐。

之后又入了airx的H400加湿器,这个加湿器通过加湿滤网泡在水箱,通过毛细现象把水吸到滤网上,然后风扇把空气吹过滤网,达到加湿空气的作用,这个加湿器的加湿量达到400ml/h,比智米的250ml/h提高了不少。入手价格999,现在日常价格799。靠加湿滤网毛细吸水,水不能最大浸湿加湿滤网,加湿量小,类似的还有352的加湿器,不推荐。

第三个加湿器是2019年入手的airmx秒新的air water a5加湿器,这个加湿器的原理是通过水泵把水从水箱抽起淋到加湿滤网上,然后风机吹滤网加湿空气,它还有一个加热流入空气的功能,所以最大加湿量为1500ml/h,但是功率也达到了600w,关掉电加热功能实测加湿量为700ml/h左右。2019年手机app功能还比较简陋,只有简单功能,而现在2020年底app功能已经比较完善,只是缺少定时开关机功能。2020年10月份air water a3发布,首发就入了,不带电加热功能,最大加湿量为1200ml/h,但是感觉第一批质量有问题,前面板经常检测到打开状态导致不能开机,就退了,实际加湿量没测,估计能到1000ml/h。airmx 的a5我在2019年入手价格2199,2020年价格2500左右,活动价2100。a3价格2300左右,活动价1600。airmx的a5和a3加湿量大,手机端目前功能也比较完善了,除了价格稍高,推荐。

今年终于下决心入了松下的FE-KXP23加湿器,它原理与airmx a5一样,没有电加热,而是增大加湿滤网面积和风扇功率,虽然简单粗暴,但是加湿量达到了2300ml/h。

下面是松下FE-KXP23加湿器开箱
包装箱正面
包装箱侧面
与airmx a5大小对比
KXP23控制面板和出风口
KXP23侧面
KXP23拆掉正面面板
KXP23水箱1
KXP23水箱2
KXP23水箱3
KXP23水箱4
KXP23拆下加湿滤网
KXP加湿滤网
kXP23与西门子双门冰箱大小对比
turbo模式下KXP23出口湿度可以达到相对湿度90%,换算成空气含水量是18克/立方米,这个测量并不精确。
KXP23出风口湿度

简单说一下松下FE-KXP23加湿器使用半天的感受
1,加湿量确实大。之前用airmx的airwater a5,室温25度时,空气湿度一般没有超过63%,而使用松下FE-KXP23加湿器使用turbo模式一小时湿度就达到了75%。
2,噪音在turbo模式下为50db。相对加湿量来说还是可以接受的,以后用法是回家开启最大加湿量,达到60%后切换到最抵挡。
3,有12升的分体式水箱,水箱口大便于清洁维护。
4,缺点:没有手机app远程控制;日本本土的100v稍有不便。好在最大功率不到50w,可以用小型变压器解决,这里使用了umi的100va版变压器。

SecureCRT中生僻字乱码解决办法

问题:使用securecrt通过ssh连接h3c的交换机,发现部分中文生僻字乱码,比如原文“湦元K”中的“湦”字是生僻字,原文显示乱码为“ぴ狵”

分析:securecrt的session设置中appearance的character encoding里选择gb18030编码,关闭securecrt程序后重试,还是乱码。在gb18030编码中查找“湦”字编码是“9ca4”,下一个字“元”编码是“d4aa”,“K”编码为“4b”,编码组合起来是“9ca4d4aa4b”,乱码中“ぴ”编码为“a4d4”,“狵”编码为“aa4b”,组合起来是“a4d4aa4b”,可见编码中“9c”被吞了,反查编码“9c”无结果。说明某个原因导致编码9c没有被识别,导致的乱码。

解决办法:在session设置中发现emulation的terminal默认是xterm,选择linux,重启securecrt即可解决乱码问题。

xterm是最古老的终端模拟,可能是某些原因把不能识别的一些字符编码做了丢弃处理,导致中文生僻字乱码。

批处理脚本封装成exe可执行文件

批处理脚本一般都是纯文本文件,有些时候不希望使用者看到代码内容,这时候可以考虑封装成exe可执行文件。

封装工具有很多种,最简单的是使用winrar或者7z封装成自解压格式,但是这种方式有些小问题,比如会有解压过程一闪而过等。

其他常用的封装软件有:
bat2exe,其实也是7z的另一种格式,也会有解压过程
quickbfc,国外收费软件
bat to exe convert,好像是德国的开源软件,作者可能钟情ipfs,代码在ipfs上,需要下载编译,可以使用这个工具
其他还有advance bat to exe convert等。

这里以bat to exe convert演示,可以在这里下载

bat_to_exe_convert_1

打开bat或者cmd文件,右侧选择图标文件,是否以管理员方式运行等,还可以在版本信息里设置exe文件属性中详细信息里的内容

点击转换就可以生成exe文件了

windows添加远程桌面3389端口映射

需求:vpn连接限制了可访问的ip和端口,想要使用windows的远程桌面

思路:
1,修改远程桌面默认3389端口为vpn可访问端口;
2,添加端口转发到远程桌面默认3389端口

实施:
1,使用rdpwrapper修改,或通过注册表修改,略。

2,添加新端口转发到3389端口,并设置防火墙放行新端口
命令如下:
端口转发:

netsh interface portproxy add v4tov4  listenaddress=0.0.0.0 listenport=%newport% connectaddress=127.0.0.1 connectport=3389

防火墙放行:

netsh advfirewall firewall add rule name="Allow VPN Remore Desktop" dir=in protocol=tcp localport=%newport% action=allow

批处理脚本:

@echo off&PUSHD %~DP0 &TITLE VPN可访问远程桌面端口设置
mode con cols=90 lines=30&COLOR f0
fltmc>nul&&(goto :message)||(echo;请以管理员身份运行,按任意键退出 &&goto :end)

:message
cls
echo;本程序需在终端计算机上运行
echo;本程序会将VPN可访问端口映射到远程桌面的3389端口,并添加相应防火墙规则
echo;
echo;按任意键继续,或点击右上角X退出
pause>nul
goto :port3389check


:port3389check
set portnum=3389
for /f "tokens=3 delims=: " %%a in ('netstat -an') do (
if "%%a"=="%portnum%" (goto :input))
echo;&echo 未检测到3389端口,请检查远程桌面服务&echo 按任意键退出&goto :end


:input
cls
echo;请输入您的VPN可访问端口并按回车
set/p userinput=端口:
echo %userinput%|findstr /r /c:"^[0-9][0-9]*$">nul
if errorlevel 1 (echo 请检查您输入的端口,按任意键开始重新输入&pause>nul&goto :input) else (
if %userinput% leq 65535 (if %userinput% geq 10000 (goto :vpnportcheck) else (echo 请检查您输入的端口,按任意键开始重新输入&pause>nul&goto :input) ) else (echo 请检查您输入的端口,按任意键开始重新输入&pause>nul&goto :input))
goto :end

:vpnportcheck
set vpnportnum=%userinput%
for /f "tokens=3 delims=: " %%a in ('netstat -an') do (
if "%%a"=="%vpnportnum%" (echo 检测到您输入的端口已被占用,按任意键退出&goto :end))
goto :portproxy

:portproxy
cls
echo;***步骤1:添加端口映射***
echo;如果360拦截,请选择“允许操作”
netsh interface portproxy add v4tov4  listenaddress=0.0.0.0 listenport=%userinput% connectaddress=127.0.0.1 connectport=3389
echo;
echo;***步骤2:添加防火墙规则***
echo;如果360拦截,请选择“允许操作”
netsh advfirewall firewall add rule name="Allow VPN Remore Desktop" dir=in protocol=tcp localport=%userinput% action=allow >nul
echo;
echo;成功,按任意键退出...
goto :end

:end
pause>nul

脚本说明:
0,github地址:https://github.com/trepwq/proxy-remote-desktop-port-batch
1,使用fltmc检查是否以管理员方式运行
2,检查3389端口是否在监听状态,使用了for循环匹配netstat -an命令结果中3389端口
3,检查输入的新端口是否合规,不能是非整数,不能是数字和其他字符组合,端口有范围,使用了findstr的正则匹配和if大小判断
4,检查新端口是否被占用,原理同2