分类: 未分类

  • 华为USG系列防火墙PPPOE拨号上网

    • 创建dialer接口
    interface Dialer0
     link-protocol ppp
     ppp chap user pppoe-user
     ppp chap password cipher 123456
     ppp pap local-user pppoe-user password cipher 123456
     ppp ipcp dns admit-any
     mtu 1492
     ipv6 enable
     ip address ppp-negotiate
     dialer user pppoe-user
     dialer bundle 1
     dialer number 0 autodial
     ipv6 address auto link-local
     ipv6 address auto global
     ipv6 mtu 1492
     healthcheck wan0
     service-manage https permit
     service-manage ssh permit
     redirect-reverse
     ipv6 redirect-reverse
     dhcpv6 client pd v6pd1
    
    • 创建健康检查
    healthcheck name wan0
    destination 223.5.5.5 interface Dialer0  protocol dns
    
    • 创建NAT
    nat-policy
     rule name Internet
      source-zone 办公网
      egress-interface Dialer0
      action source-nat easy-ip
    
    • 创建默认路由
    ip route-static 0.0.0.0 0 Dialer0
    ipv6 route-static :: 0 Dialer0
    
    • 绑定pppoe会话到wan0口
    interface WAN0/0/0
     pppoe-client dial-bundle-number 1
     undo shutdown
     anti-ddos flow-statistic enable
     service-manage https permit
     service-manage ssh permit
    
    • 配置lan口
    dhcpv6 pool pool1
     dns-server FD06::1
    interface Vlanif6
     ipv6 enable
     ip address 192.168.2.1 255.255.255.0
     ipv6 address v6pd1 ::1:0:0:0:1/64
     ipv6 address FD06::1/64
     ipv6 address auto link-local
     ipv6 address auto global
     ipv6 mtu 1492
     undo ipv6 nd ra halt
     ipv6 nd autoconfig other-flag
     alias Vlanif6
     service-manage http permit
     service-manage https permit
     service-manage ping permit
     service-manage ssh permit
     dhcp server mask 255.255.255.0
     dhcp server ip-range 192.168.2.1 192.168.2.254
     dhcp select interface
     dhcpv6 server pool1
     dhcp server gateway-list 192.168.2.1
     dhcp server dns-list 192.168.2.1
    

    注意:
    如果拨号成功后ipv6不通,可以删除并重新配置以下命令:

     ipv6 address auto link-local
     ipv6 address auto global
     dhcpv6 client pd v6pd1
    

    如果ipv6上网不稳定还可以配置以下命令:

    tcp ipv6 max-mss 1432
    

    Views: 1

  • debian系统自动签名dkms模块

    • 启动自动签名
      打开/etc/dkms/framework.conf,反注释以下两行
      >mok_signing_key=/var/lib/dkms/mok.key
      mok_certificate=/var/lib/dkms/mok.pub
    • 导入mok到主板
      mokutil --import /var/lib/dkms/mok.pub
      这条命令执行后会提示输入密码,重启动需要在Bios界面输入相同的密码进行确认才能启动

    Views: 2

  • ubuntu从传统模式切换到uefi安全启动

    • 创建一个大小为100-200MB的FAT32分区
      可以用fdisk,parted,gparted等分区工具创建,分区类型为主分区,开启boot标志。如果没有剩余空间可以用livecd启动调整分区大小
    • 安装uefi启动相关依懒
      apt install shim-signed grub-efi grub-efi-amd64-signed
      shim-signed 是使用微软签名的uefi启动文件,是支持安全启动必须的
      grub-efi 为grub启用efi支持,但是不支持安全启动
    • 修复uefi启动
      ubuntu有三种方式可以修复启动

      1. 纯手工
        • 用ubuntu livecd启动进行桌面
        • 执行以下命令
          mount -t efivarfs none /sys/firmware/efi/efivars
          mount /dev/sdb3 /mnt
          mount /dev/sdb2 /mnt/boot
          mount /dev/sdb1 /mnt/boot/efi
          mount /dev/sdb2 /mnt/
          mount /dev/sdb1 /mnt/boot/efi
          for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do mount -B i /mnt/i; done
          chroot /mnt
          grub-install /dev/sdb
          update-grub
          

          按Ctrl-D退出chroot
          重启电脑或虚拟机

      2. boot-repair包
        • 安装boot-repair
          sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt update
          sudo apt install -y boot-repair && boot-repair
          
        • 修复
          启动boot-repair,点击Recommended repair或者点开高级选项,然后分别选择efi分区,boot分区,系统分区,最后点击apply按钮
      3. 使用boot-repair disk
        boot-repair disk实际上就是一个集成了bot-repair的livecd,相当于Windows上的WinPE

        • 下载boot-repair disk
          https://sourceforge.net/projects/boot-repair-cd/files/
        • 使用下载的iso启动系统
          下面的步聚跟liveCD方式一样了

    注意:
    使用iso启动时若不能启动可以暂时关闭bios中的安全启动
    以上方法即可以用于轨换启动式到uefi,也可以用于修复uefi引导
    我是先在bios中切换到uefi启动然后去修复操作系统的引导的,不知道先修复引导再改bios行不行

    Views: 4

  • IKEv2对Ed25519,Ed448的支持

    1. 数字签名认证
      IANA(https://www.iana.org/assignments/ikev2-parameters/ikev2-parameters.xhtml)
      定义的IKEv2认证方法中并不包括EdDSA,因为椭圆曲线有很多种,每一种曲线都定义一种认证方法会难为管理,所以在RFC7427中定义了一个名为Digital Signature的数字签名认证方法,可以支持所有的签名算法,具体用哪种算法则由ASN.1 OID来区分。
      ed25519算法的OID是1.3.101.112(RFC8410定义)
      RFC8420定义了EdDSA的具体要求,RFC8420发布于2018年,所以可以说IKEv2在2018年引入了ed25519或ed448数字签名认证的支持。

    参考:
    https://docs.strongswan.org/docs/5.9/pki/pkiQuickstart.html

    1. 密钥协商
      RFC 8031定义了DH组31和32,分别代表x25519,x448算法。strongswan也提供了dh组31和dh组32的支持。
      参考:
      https://wiki.strongswan.org/projects/strongswan/wiki/552

    Curve25519和Curve448曲线的定义:
    https://datatracker.ietf.org/doc/rfc7748/

    2018年发布的TLS1.3也支持Ed25519和Ed448签名算法

    Views: 10

  • 加密算法简介(含国密)

    国际算法

    • DES 旧的对称加密算法,已废弃
    • AES 新的对称加密算法,用于取代DES
    • AES-GCM 加密的同时提供消息验证,密文和验证码(MAC)一起发送,也就是AEAD,其它不带GCM后缀的AES算法不支持AEAD,ipsec和tls1.2,1.3都支持gcm模式
    • Blowfish 对称加密,已废弃
    • chacha20 流式对称加密,使用256位密钥长,对应AES256,安全性与AES相当或略优于AES,纯软件件计算比AES快3倍,比硬件AES慢1倍。这个算法以后用的会越来越多,在没有AES指令集的设备上chacha20是首选算法。由RFC 8439定义。
    • chacha20-poly1305 chacha20的AEAD版
    • RC4 对称加密,特点是速度非常快,比硬件加速的AES还快,已废弃
    • RSA 非对称加密算法,可用于消息加密,消息签名,密钥交换(低于1024位不安全)
    • ECC 非对称加密算法,另外用于密钥交换时用ECDH,用于消息签名时用ECDSA,一般不直接用于加密,根据不同的密钥长度分为P-192, P-224, P-256, P-384 和 P-521。
    • curve25519 非对称加密算法,蒙哥马利曲线,另一种椭圆曲线,256位的密钥长度,比ECC速度更快,更安全
    • curve448 非对称加密算法,448位的密钥长度,curve25519的加强版,安全性更高,但速度没有curve25519快
    • DSA 非对称加密算法,只能用于消息签名,但是用于签名时相比RSA也没有啥优势,所以使用并不多
    • ECDSA DSA的ECC版,ECC一般不直接用于签名,目前基于ECC的数字签名算法就是ECDSA
    • EDDSA 基于爱德华兹曲线的签名算法,速度更快,更安全,用于取代ECDSA,因为NIST有往算法里掺沙子的前科。
    • ED25519 是EDDSA的curve25519实现,密钥长度是256位
    • ED448 是EDDSA的curve448实现,密钥长度448位
    • DH 非对称加密算法,只能用于密钥交换
    • ECDH DH的ECC版,ipsec中DH group 19,20,21使用的是ECDH,其它使用的是DH
    • X25519,X448 ED版的DH算法,分别对应curve25519,curve448,ipsec中对应dh31和dh32
    • DHE,ECDHE 使用临时公私钥的DH,ECDHE算法,提供PFS能力,TLS1.3上PFS是必选的,IPsec可选支持PFS
    • MD5 散列算法,128位,速度很快,已废弃
    • SHA-1 散列算法,160位,已废弃
    • SHA-2(SHA256-SHA512) 散列算法
    • SHA-3(SHA3-256-SHA3-512) 散列算法,长度与sha2一致但使用了不同的算法,是SHA2的备选。目前并没有消息说SHA3比SHA2更安全,只是没有与SHA2相同的弱点。
    • HMAC 加了密码的散列算法,即可以用于散列,也可以用于身份验证(密码不一样,散列结果不一样),HMAC可以与任意其它散列算法一起使用,这样散列算法也实现了AEAD

    国密算法:

    • SM1 相当于AES128,算法不公开,用于小数据量的加解密
    • SM2 基于ECC,相当于ECC256,ECDH,ECDSA,可用于加密,签名,密钥交换,USG6525E防火墙支持使用sm2进行身份认证
    • SM3 相当于SHA-256,但比sha-256g速度慢,支持MAC的版本为HMAC-SM3,USG6525E防火墙不支持IKEV2的完整性验证,但支持sm3用于IKEV1的完整性验证
    • SM4 与SM1一样都是对称加密,用于大数据量的加解密,也可以支持GCM模式(AEAD),USG6525E防火墙中可用于IPsec的数据加密,但不支持GCM模式,所以还需要另外配置完整性验证(使用GCM模式时esp authentication-algorithm不再生效)
    • SM7 与SM1一样,都是128位密钥和分组,主要用于非接触式IC卡,算法不公开
    • SSF33 对称加密,使用较少,算法不公开
    • SM9 非对称加密,使用用户标识(手机号,姓名,email地址)作为公钥,免去了证书创建,使用更方便,属于轻量级的非对称加密
    • ZUC 流式对称加密,可支持AEAD,已成为LTE标准

    注意:
    ECC256的安全性相当于RSA3072
    ECC256的破解难度相当于AES128,对称密码的破解难度要比非对称密码高
    SECP定义的曲线以r1作为后缀的与NIST定义的曲线是相同的,比如secp256r1等于nist p-256,secp38441等于nist p-384,这个定义secp曲线的seca组织是NIST的马甲吗?
    这里可以查看各个曲线的参数定义
    https://neuromancer.sk/std/secg/secp256r1
    secp256k1不是由nist定义的,比特币用的也是这个算法
    brainpool系列曲线是由rfc5639定义的,比nist的更安全,但是速度要慢得多,所以一般用ed25519的多
    爱德华兹曲线相关的ed25519,x25519,ed448,x448是由IETF定义的
    TLS1.3提供了对cure25519,cure448,AEAD的支持,USG6525E支持AEAD但不支持cure25519和cure448
    sha1,sha2,sha3,dsa,ecdsa,aes,ecc NIST P-xxx,des,hmac等算法都是由nist定义的
    关于ipsec中的dh组应该是由ietf自己定义的,可以参考RFC6071,国密算法中没有定义dh组
    各种椭圆曲线算法中只有国密的SM2是能直接加解密数据的,NIST,SECG,IETF定义的ECC和ED25519都不支持加解密数据,而只能用于签名和密钥交换
    2012年起中国国家密码局陆续发布国密算法,2013发生棱境门事件并爆出了Dual_EC_DRBG后门
    中国国家密码局2014年发布GM/T 0022-2014 IPSec VPN技术规范,2023年发布了GM/T 0022-2023 IPSec VPN技术规范
    中国国家密码局发布的商秘(SM)算法不能用于处理国家秘密,只能用于处理商业秘密
    AEAD把认证数据分为加密数据和非加密数据(关联数据),通过一个MAC保证加密部分和非加密部分均未篡改。通常IP数据包内容是需要加密的数据,IP数据包头是不需要加密的信息。

    Views: 13

  • 上海移动IPTV单线复用

    1. 运营商光猫桥接
      拓朴图:

      这是最简单的一种实现方法,拓扑图是最简化的情况,交换机可以多个串联,还可以使用支持Vlan的交换机。
      pon stick设置

      其中关键的几点:
      连接模式 桥接
      IP模式 IPv4&IPv6
      DHCP Server关闭
      MTU 1500
      启用Vlan 选中
      Vlanid 1101
      LAN端口绑定 LAN1

      其中关键的几点:
      连接模式 桥接
      IP模式 IPv4&IPv6
      MTU 1500
      启用Vlan 选中
      Vlanid 1103
      Openwrt设置
      IPv6 ULA 前缀:设置为空,机顶盒不支持ula并会导致机顶盒ipv6不通,如果不需要机顶盒的ipv6支持也可以不设置为空
      防火墙设置

      网络拓扑
      如果使用的是管理型交换机自己根据需要配置,至于网上提到的dhcp option125我这里没有用到,如果有用到的可以参考网上的贴子。我这里把vlan配置好就能用了。
      openwrt中dhcp option可以这样配置(不必要):
    2. 猫棒+openwrt路由器
      我用的是MA5671A,在猫棒上把互操作兼容模式关闭,这样把所有的Vlan透传到路由器
      网络拓朴

      openwrt上把所有端口放到一个网桥中,把openwrt路由器当成一个交换机然后划分vlan

      重点是其中的1101,1103,50这3个vlan,这是从pon网络传过来的。31,33这两个vlan是在本地创建的,我把局域网和iptv的网段通过vlan分隔了。其它的vlan没有用,我只是把pon网络支持的vlan全配置了。
      防火墙的配置参考上面,IPv6 ULA 前缀也与上面一致。
      拨号的时候绑定vlan 1101

      iptv内网绑定vlan 31,lan绑定vlan 33
      这样做理论上是没有问题的,但是我每次打开机顶盒都要重启路由器,不然就会像看幻灯片一样,抓包发现会有大量丢包,而且vlan 1103的tag标签时不时的会丢掉。vlan标签丢掉是造成丢包的一个原因,是不是所有原因还不清楚。基本上可以确定vlan标签在网桥中透传时出错了。还不确定是个例还是openwrt的通病。
    3. pon stick插到交换机上
      拓朴图

      这种方法我没有试,但可以绕过openwrt用交换机进行vlan透传,避免openwrt造成的丢包问题。

    注意:
    MTU正确设置也是很重要的,ppoe连接上一定要打开mss钳制,连接的mtu也要设置正确。
    vlan说明:1101是pppoe,1103是单拨iptv,50是组播,110是tr069,1102是voip,其中有用的是1101和1103。lan端口绑表表示untag口,否者就是tag口
    我在配置的过程中影响比较大的还是vlan和mtu,这两点没问题就能通。另外机顶盒对ipv6兼容性不是很好也是要注意的地方。
    有线和无线尽量不放在一个vlan或网段中,因为有线网络中的广播以及组播包会干扰无线网络。

    Views: 26

  • pandas的index

    • 定义index
      1. 读取csv时
        data = pd.read_csv('data.csv', index_col='id')
        这种方法会创建命名的索引列,并且会放在第1列(不管csv文件中是第几列)
      2. 声明DataFrame时
        data = [['Google', 10], ['Runoob', 12], ['Wiki', 13], ['Baidu', 20], ['taobao', 15]]
        # 创建DataFrame
        df = pd.DataFrame(data, columns=['Site', 'Age'], index=[1,2,3,4,6])
        

        这种方法会创建没有名字的索引列,仍然放在第1列。

    • 遍历时使用index
      1. 使有iterrows()
        for index, item in df.iterrows():
        print(index, item) #index的值就是上述定义的index值,并不是连续的序号
        print(item[0]) #item[0]就是第1列Site的值,item中不包含index列
        
      2. 使用itertuples()
        for item in df.itertuples():
        print(item)
        print(item.Index) # i.Index就是索引列的值
        print(item[0]) # 与item.Index的值相同,也是id列的值,id列会强制移动第0列。
        print(item[1]) # Site列的值
        

        如果原始数据中没有index会自动生成一个递增的index列。

      3. 无index的itertuples()
        for item in df.itertuples(index=False):
        print(item)
        #print(item.Index) # 报错
        print(item[0]) # Site列的值
        print(item[1]) # Age列的址
        

        id列或者index列会被从Series中移除,无法访问id列。

    Views: 0

  • ipv6组播

    MLDv1
    https://datatracker.ietf.org/doc/rfc2710/
    MLDv2,添加了组播源过滤,对应IGMPv3协议
    https://datatracker.ietf.org/doc/rfc3810/
    MLD Snooping
    https://support.huawei.com/enterprise/zh/doc/EDOC1000178150/ee7e5721

    IPv6基础协议中广泛使用了各种组播地址,这样能减少广播泛洪。但是路由器和交换机不支持组播MLD协议的话还是会广播泛洪,也使用广播没有区别。
    在交换机和路由器上开启MLD协议,可以对组播报文进行过滤,而不是在所有端口上进行转发。MLD支持除ff02::1和节点本地地址外的所有组播地址识别处理。

    MLD报文是由三层设备(路由器)发出的,交换机只负责监听,当路由器没有开启MLD时交换机上的MLD Snooping也是不能正常工作的(实际发现即使没有MLD querier时终端也会定时发送MLD report)。当路由器不支持MLD时可以在交换机上配置MLD查询器或者MLD代理代替路由器发送MLD查询报文。
    实验发现关闭路由器上的MLD功能后交换机仍然能看到组播表项,只是表项很快就消失,并不稳定存在。
    华为MLD代理的配置:
    https://support.huawei.com/enterprise/zh/doc/EDOC1100366607/c39c955e

    RFC原文:

    When a node receives a General Query, it sets a delay timer for each
    multicast address to which it is listening on the interface from
    which it received the Query, EXCLUDING the link-scope all-nodes
    address and any multicast addresses of scope 0 (reserved) or 1
    (node-local).

    Views: 6

  • 小米13 root

    • 下载工具
      下载PHP
      https://windows.php.net/download/
      下载跳过设区5级和答题工具
      https://github.com/MlgmXyysd/Xiaomi-HyperOS-BootLoader-Bypass
      下载Settings.apk
      https://pan.hetao.me/s/iDRAm6cGbo9PQMx
      这个apk要安装到手机上,然后运行bootloader-bypass的时候会报错
      下载小米解锁工具
      https://www.miui.com/unlock/download.html
    • 手机设置
      设置 - 我的设备 - 全部参数与信息 – 狂点 MIUI 版本号 进入开发者模式
      设置 - 更多设置 - 开发者选项 – 开启 OEM 解锁
      设置 - 更多设置 - 开发者选项 - 设备解锁状态 – 绑定帐号和设备
    • 绕过hyperos答题
      执行php bypass.php
    • 解锁bootloader
      按手机音量减和电源键不松,直到进行fastboot模式
      然后运行小米官方解锁工具
      注意:解锁会清空手机所有数据
    • 安装KernelSU
      https://kernelsu.org/zh_CN/guide/installation.html

    Views: 0

  • ac9700s-s配置组播优化


    广播&组播报文转单播失败遍历发送:这一项一定要打包,不然会网络不通
    对应的命令:

    traffic-profile name default
      rate-limit client dynamic disable
      mld-snooping enable
      igmp-snooping enable
      traffic-optimize multicast-unicast enable
      traffic-optimize multicast-unicast dynamic-adaptive disable
      traffic-optimize arp-proxy enable
      traffic-optimize nd-proxy enable
      traffic-optimize bcmc unicast-send mdns
      undo traffic-optimize bcmc unicast-send mismatch-action drop
    


    IP地址学习也要打开,不然组播转单播无法工作
    对应的命令(地址学习是默认开启的):

    vap-profile name Net
      service-vlan vlan-id 12
      ssid-profile Net
      security-profile Net
      traffic-profile Net
      layer3-roam disable
      mdns-snooping enable
    

    广播组播报文抑制

    Views: 0