分类: 未分类

  • 华为Ipsec优化(提高连接稳定性)

    system
    ipsec invalid-spi-recovery enable# ipsec sa单端断联后恢复,否者只能等dpd超时
    ipsec df clear #ipsec分片
    ike nat-keepalive-timer interval 25 #nat会话保持
    ike peer peer1
     dpd type periodic #在没有数据要发送时也发送dpd消息,总部设为on-demand分部设为periodic
     dpd idle-time 30 #dpd消息间隔,一般nat会话不少于30s
     ikev2 fragmentation #ike报文分片
    

    但是有时候发现连接时间长了上级路由器的nat会卡断,只有更换IP或端口号才能继续连接,对于这种情况可以考虑每天重启路由器或把nat-keepalive-timer及dpd idle-time设长一些

    Views: 80

  • 配置华为设备使用SSH公钥登录

    • 使用openssh格式公钥
    aaa
    local-user admin service-type terminal ssh ftp http
    quit
    ssh user admin authentication-type all
    rsa peer-public-key tao encoding-type openssh
    public-key-code begin
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAA6mw8q1ok9ElbkNRvalOnECxRXaz8oO3sDlL+F8c5dTm09nuK4z1leQlsO
    2qMX49foxoCg/sXcVg351dooKkrjZt4IzikGN/hm49lrH4uJGffm9CGmuhF5Xyj1QyvwnA9iERusSS4yf3NvmSR6w5fyCxzKd/09GG8SJ1mXVWw0U9Cd+jk7fEq/6eVsvQNdr23wEXppdkpV9URCvygDR4dk7FBnnmpLD9gOIshpgFPO6452YzaPqpGU/US/YjmbsDNROPHBVvAC/xaCDy6IJCqR8jkKQUya+uPLC29Xfhly+taHV8KHNJ41leN6L/09Lh7uFuN5jGHGHgCJyXPOnP haohetao@gmail.com
    public-key-code end
    peer-public-key end
    dis rsa peer-public-key
    ssh user admin assign rsa-key tao
    
    • 使用华为专有格式的公钥
      有些华为设备或固件版本不支持openssh格式公钥,只能使用华为格式
      执行ssh-keygen -e -m pem -f ~/.ssh/id_rsa.pub | sed '1d;$d' | tr -d '\n' | base64 -d | od -t x1 -An | tr -d ' \n' | tr 'a-f' 'A-F' | sed 's/\(.\{8\}\)/\1 /g' | fold -w 54把本地openssh格式的公钥转换为华为格式
    ssh user admin authentication-type all
    rsa peer-public-key tao
    public-key-code begin
    3082010A 02820101 00C003A9 B0F2AD68 93D1256E 4351BDA9
    4E9C40B1 4576B3F2 83B7B039 4BF85F1C E5D4E6D3 D9EE2B8C
    F595E425 B0EDAA31 7E3D7E8C 680A0FEC 5DC560DF 9D5DA282
    A4AE366D E08CE290 637F866E 3D96B1F8 B8919F7E 6F421A6B
    A11795F2 8F5432BF 09C0F621 11BAC492 E327F736 F99247AC
    397F20B1 CCA77FD3 D186F122 75997556 C3453D09 DFA393B7
    C4ABFE9E 56CBD035 DAF6DF01 17A69764 A55F5444 2BF28034
    78764EC5 0679E6A4 B0FD80E2 2C869805 3CEEB8E7 663368FA
    A9194FD4 4BF62399 BB033513 8F1C156F 002FF168 20F2E882
    42A91F23 90A414C9 AFAE3CB0 B6F577E1 972FAD68 757C2873
    49E3595E 37A2FFD3 D2E1EEE1 6E3798C6 1C61E008 9C973CE9
    CF020301 0001
    public-key-code end
    peer-public-key end
    dis rsa peer-public-key
    ssh user admin assign rsa-key tao
    

    注意:
    复制密钥的时候不要漏掉后面的尾巴,尤其是复制华为16进制密钥格式时,因为末尾没有换行容易忽略

    Views: 121

  • pve开启串口(debian,ubuntu同)

    1. 配置grub和内核支持串口
      修改/etc/default/grub
      添加以下内容

      GRUB_CMDLINE_LINUX=”console=tty0 console=ttyS0,115200n8″
      GRUB_TERMINAL_INPUT=”console serial”
      GRUB_TERMINAL_OUTPUT=”console serial”
      GRUB_SERIAL_COMMAND=”serial –unit=0 –speed=115200 –word=8 –parity=no –stop=1 –dumb xterm”
      GRUB_TERMINAL=’console serial’

    2. 配置linux shell支持串口
      mkdir -p /etc/systemd/system/serial-getty@ttyS0.service.d/
      vi /etc/systemd/system/serial-getty@ttyS0.service.d/override.conf
      

      添加以下内容

      [Service]
      ExecStart=
      ExecStart=-/sbin/agetty -o ‘-p — \u’ 115200 %I xterm

      systemctl daemon-reload
      systemctl restart serial-getty@ttyS0.service
      systemctl enable serial-getty@ttyS0.service
      

    用客户端连接的时候终端类型选择xterm,xterm没有屏幕大小的限制,而且支持颜色。
    grub默认的终端类型是vt100且不支持xterm,不过基本的功能与xterm也是兼容的。

    Views: 40

  • intel软路由(倍控G31主板)安装驱动

    显卡驱动
    https://www.intel.cn/content/www/cn/zh/support/detect.html
    网卡驱动
    https://www.intel.cn/content/www/cn/zh/download/15084/intel-ethernet-adapter-complete-driver-pack.html
    芯片组驱动
    https://www.intel.com/content/www/us/en/download/19347/chipset-inf-utility.html
    serial io
    https://www.intel.cn/content/www/cn/zh/download/780244/intel-serial-io-driver-for-windows-10-64-bit-windows-10-iot-enterprise-and-windows-11-for-intel-nuc-13-compute-element-elm13ib-x.html?wapkw=Serial%20IO%20Driver%20for%20Windows%2011

    Views: 60

  • openwrt安装Docker

    安装这几个

    执行
    cp /etc/config/dockerd-opkg /etc/config/dockerd
    修改docker配置或仓库地址在这个文件中配置
    然后重启(重启前docker不能正常工作)

    Views: 148

  • OpenWrt磁盘扩容

    我的测试结果是要扩充磁盘只能选择ext4分区,squashfs无法支持磁盘扩容,也不能挂载其它分区到/或/overlay,挂载到其它位置又起不到扩容的目的。这是一个古老bug导致的,https://github.com/openwrt/openwrt/issues/9015 ,openwrt并没有从rootfs中读取fstab而是从rom中。
    我用的是openwrt-23.05.0-x86-64-generic-ext4-combined-efi.img这个镜像

    1. 安装工具

    安装block-mount并重启后页面上才有挂载点管理功能

    opkg install block-mount parted
    reboot
    
    1. 添加磁盘


    添加磁盘而不是添加分区的原因是为了支持固件升级,升级后第一块磁盘除了配置文件都会被覆盖掉
    parted /dev/sdb
    mktable gpt
    mkpart primary ext4 0% 100%
    quit
    mkfs.ext4 -L extroot /dev/sdb1

    1. 挂载磁盘

    按如下配置,添加一个挂载点

    然后执行

    mount /dev/sdb1 /mnt
    tar -C /overlay -cvf - . | tar -C /mnt -xf - # 或 tar -C /rom -cvf - . | tar -C /mnt -xf - 取决于安装类型
    umount /mnt
    reboot
    

    转移文件到新磁盘是因为,如果刷固件的话原root分区中的数据会丢失,如果做的有配置或安装的有软件的话会导致刷固件后系统出问题,如果没有安装任何东西也可以不转移数据。
    重启后可以看到已经挂载成功


    刷固件后第一次启动extroot分区不会自动挂载,再重启一下就好了。

    基于命令行的实现方法:
    https://openwrt.org/docs/guide-user/additional-software/extroot_configuration

    Views: 77

  • PVE安装OpenWrt

    1. 创建虚拟机




    这里创建的efi磁盘稍后要删除掉,不然无法启动

    磁盘要删掉





    2. 导入openwrt镜像

    进入pve控制台执行以下命令

    wget https://mirror.sjtu.edu.cn/openwrt/releases/23.05.0/targets/x86/64/openwrt-23.05.0-x86-64-generic-squashfs-combined-efi.img
    gzip -d openwrt-23.05.0-x86-64-generic-squashfs-combined-efi.img
    qm disk import 117 openwrt-23.05.0-x86-64-generic-squashfs-combined-efi.img data-lvm
    

    命令执行结果如下图

    上面未使用的磁盘就是刚才导入的磁盘



    3. 设置引导


    4. 启动并设置openwrt


    进入shell后执行如下命令

    passwd
    ip addr del 192.168.1.1/24 dev br-lan
    ip addr add 192.168.33.30/24 dev br-lan
    ip route add default via 192.168.33.1
    echo nameserver 192.168.33.1 > /etc/resolve.conf
    sed -i 's/downloads.openwrt.org/mirror.sjtu.edu.cn\/openwrt/g' /etc/opkg/distfeeds.conf
    

    然后浏览器打开openwrt做其它设置

    Views: 41

  • dnsmasq解析本地域名的若干方法

    写这个主要是因为如果在公网上配置了IPv6地址的话本地IPV4解析就失效了
    – 方法1,用–address
    2.86版本以后改变了–address=/example.com/1.2.3.4配置的行为,A记录以外的其它记录类型仍然 会向上游转发,这在以前版本是不会的,要保持与以前相同的行为要使用如下写法:
    --address=/example.com/1.2.3.4 --local=/example.com/
    – 方法2,用hosts
    --server=/example.com/
    然后在hosts文件中添加
    1.2.3.4 example.com
    在华硕路由器上的hosts文件是/jffs/configs/hosts.add
    – 方法3,用–dynamic-host添加动态IPV6地址
    –dynamic-host example.com,0::1.2.3.4,br0
    dnsmasq会从br0上获取接口地址添加到ip地址前缀中

    Views: 86

  • frp的xtcp打洞测试

    • 在windows上无论如何都会失败(windows成功率更低)
      后来发现只是我这台电脑有问题,不过仍然说明兼容性并不好
    • xtcp依懒于stun,然而并没有稳定的stun服务器,自建的stun服务器都用不了(可能需要开放全部端口才行)
      国内可用的stun服务器stun.miwifi.com:3478,stun.qq.com:3478
    • stun测试
      执行命令./frpc nathole discover --nat_hole_stun_server stun.miwifi.com:3478,如果 正确返回IP端口号则说明stun能正确工作,如果不能xtcp大概率也不会通
    • 从结果来看xtcp的打洞成功率远低于wireguard+wgsd

    Views: 167

  • WireGuard部署及NAT打洞

    主要参考文档:

    wireguard文档
    相关中文翻译
    – https://blog.51cto.com/u_15077562/4574884
    – https://icloudnative.io/posts/wireguard-docs-theory/
    nat穿透
    相关中文翻译
    – https://xie.infoq.cn/article/3f68cde0163b359b13fa1a8f0
    – https://icloudnative.io/posts/wireguard-endpoint-discovery-nat-traversal/

    总结

    • nat穿透的时候需要NAT后的节点共同连到一个有公网IP的节点上
    • 在nat背后的两个节点相连的时候需要至少一个是全椎形NAT,或者双方都为限制椎形
    • coredns部署在具有公网IP的节点上
    • wgsd_client需要在nat背后的节点上定时运行,可以5分钟或10分钟一次
    • wgsd的代码可以自己编译,尤其在windows上只能自己编译,在对应目录中运行go build就可以了
    • nat状态表的过期时间一般为2分钟,所以keepalive周期最好在1分钟以内
    • nat后节点不需要与公网节点能正常通信,只需要能向公网节点发起连接就行,所以coredns最好在公网开放端口,这样在不能与公网节点通信时也能用
    • 运营商级NAT都不是全椎形
    • nat类型探测工具
      https://github.com/HMBSbige/NatTypeTester
    • nat类型介绍
      https://support.huawei.com/hedex/hdx.do?docid=EDOC1100331440&id=ZH-CN_CONCEPT_0183792552
      https://zhuanlan.zhihu.com/p/657998085

    Views: 809