公司断电导致软路由重启出现网络问题解决方法
内容纲要

断电导致软路由重启问题解决方法

声明:该方法是治标不治本,因为openwrt 软路由文件系统可能由于高负荷工作时断电,发生文件损坏,修复并不完善。细节会在文档中说明。

[toc]

1. 原因排查(不必执行该目录下的命令):

  • 事件原因:软路由运行时突然断电,可能导致文件系统部分文件损坏,虽然使用fsck 修复,但是可能部分关于网卡自启动的命令存在问题,导致软路由无法启动虚拟机。

  • 排查经过(硬件部分):

    1. 公司整体网络局域网无连接,考虑运营商的问题,笔记本网卡接光猫,但没网( 因为光猫不具有拨号功能,当时未考虑宽带拨号问题 )。
    2. 由于公司 2条宽带,一条公网IP专线,公网专线接的故障这边的局域网。另一条宽带能联网,而且电信给的回复这边网络没问题,因此 考虑是本地设置的问题
    3. 考虑到网络结构中总有一个网络设备负责拨号上网,因此使用 笔记本接光猫并拨号,测试能上网(确定是拨号设备故障导致连不了网)。
    4. 误会电信那边人员,我当时以为软路由是电信那边帮忙安装的。而且电信技术员理解错了,以为我询问的是专线路由器(所以导致了乌龙)。
    5. 使用TP-Link 路由器接光猫并拨号,先临时让网络正常运转。随后处理OpenWrt 软路由( 此时原因已确定,就剩下一步一步排错并解决 )。
  • 排查经过(软件部分):

    1. 软路由接HDMI,发现是Proxmox 的虚拟机,内核启动之后加载文件系统出现报错( 如下 )

      image-20230819102358221

      允许文件系统检查,查找半天的原因解决方案

      # 执行命令无效,(因为根本就不是下面的命令)
      fsck -p /dev/nvme0
      umount /dev/nvme0
      # 我此时以为是根文件系统挂载的问题,(并不是,而是它提示的路径/dev/mapper/pve-root 文件系统故障)
      
      # 需要执行,一路按Y 或者加-y
      fsck /dev/mapper/pve-root -y

      最终执行命令的参考地址

      image-20230819102706611

    2. 之后重启可能会遇到问题,多试几次,如果是文件系统问题,还是依照上方的解决步骤来

    3. 进入到登录界面,此时你以为万事大吉了( 并没有 )?后续排错才刚开始。

      # 1.试着网线直插openwrt,将电脑网卡设置为固定IP,亦或者DHCP 进行尝试。
      # 2.登录下面的proxmox 管理地址。但是并进不去,此时也不知道proxmox 密码!!!
      # 3.因为不知道密码,所以根本不了解proxmox 后面藏着什么精灵古怪

      image-20230819103001143

    4. 由于不知道密码,并尝试了很多密码都无法成功登录,因此需要重置Linux 密码

      proxmox 官方重置密码教程

      教程博客(下方笔记就是根据博客来)

      • 在下图的引导界面,按 E进入引导配置界面

      resetpvepwd_1

      • 在引导配置界面中划到最下面,并修改下图部分的引导配置为 init=/bin/sh( 注意看~:这里的/dev/mapper/pve-root 是不是很眼熟? )

      image-20230819105639254

      resetpvepwd_3

      • 按Ctrl+X 启动系统,并输入 mount -o remount rw / 然后再输入 passwd之后就设置新密码了!!

      resetpvepwd_4

      resetpvepwd_5

      resetpvepwd_6

      • 重启 reboot now ,或者断电重启也行。这样就可以用新密码进入proxmox 了
    5. 进入proxmox 之后,发现,连不上网,于是修改IP和网关和当前电脑同一网段一致,并修改proxmox web 管理界面地址

      # 修改IP 地址为当前网段
      nano /etc/network/interfaces
      
      # 查看IP 信息
      ip addr
      
      # 测试网络连接
      service networking restart  # 重启网卡
      ping 192.168.100.1     # 当时设置的网关地址。
      
      # 修改WEB 页面地址
      nano /etc/issue
      
      nano /etc/hosts  # 只改IP 不改其它。
      
      # 测试通过之后访问
      https://192.168.100.x:8006
      
    6. 进入之后发现 OpenWrt 虚拟机并没有启动。( 而且每次重启之后必须执行service networking start启动网卡,而且Proxmox 也报错,网卡桥接无设备,导致OpenWrt 虚拟机无法启动 )

      因此已确定问题点。剩下就慢慢折腾。

    7. 进入OpenWrt 路径中的文件vim /etc/config/network

      可以看出,这边使用了2个网卡,一条作为网关192.168.2.1一条为pppoe拨号上网( 下方宽带信息已隐匿 ),我们并不修改它,只是作为参考,初步了解这边的数据收发形式。

      image-20230819111825392

    8. 根据Proxmox 的桥接信息,确定网卡如何连接

      • openwrt 的网络设备

      image-20230819112122899

      • PVE 网络信息

      image-20230819112304752

      此时: vmbr0 就是openwrt 中的 lan,vmbr2 就是openwrt 中的 WAN

      也就是,目前调试的网线那根口接光猫,另外的口接外部交换机。

    9. 目前可以将软路由放在机房进行测试了。

      # 调试技巧:
      1. 使用TP-Link路由器 作为调试工具
      将TP-Link 的局域网IP 设置为192.168.2.22/24 网段,
      Openwrt 插上显示屏,在局域网中先进入proxmox 启动Openwrt 虚拟机。
      将之前改过的PVE 地址复原,IP 地址 192.168.2.210
      2. 由于OpenWrt没改动,但是连不上网,我也怀疑openWrt 的网卡没启动。。。。
      因此,在OpenWrt 控制台输入 
      systemctl restart network
      # 如果不行就改为 networking
      或者 
      service network restart
      
      3. 然后proxmox 掉线(但是),可能是openwrt 接管了网卡。
      怀疑成功了。手贱接了屏幕,在proxmox 的DOS 界面Ping 192.168.2.1,没想到成功了。
      此时已经修复。治标不治本,但是能用。
      vmbr2 口接回交换机。此时网络已经可以正常使用了,VPN 工作正常。

2. 修复命令( 断电重启必定遇到该问题,应急使用 )

openwrt 接显示器,在机房操作,确保等会不会挪动电源。 && 启动 openwrt 虚拟机
  • vmbr0 也就是靠近电源DC口的那个网口插TP-link (下图绿色标注) ,同时笔记本连接上TP-link 的WIFI,进入管理界面,修改IP网段为 192.168.2.22/24 ( 22作为局域网网关地址,确保能进proxmox web 页面 )

    image-20230819115006526

  • 修复文件系统( 如果有提示的话 )

    # 修复登录文件系统  如果提示 /dev/mapper/pve-root  如果提示其它,就该地址就行
    fsck /dev/mapper/pve-root -y
  • 如果忘记root 密码,那就看前面的密码重置部分

  • 在proxmox 的Shell 中执行网卡启动。

    # 启动软路由的网卡
    service networking start
    
    # 测试网络是否能和网关连接
    ping 192.168.2.22
  • 进入web 管理界面 https://192.168.2.210:8006 启动虚拟机

    image-20230819115542490

  • 在web 管理界面,进入虚拟机启动/重启网卡。

    # 命令不太确定,挨个试,只要试着能让web 页面掉线就行(掉线意味着 openwrt 接管了网卡)
    systemctl restart network
    systemctl start network
    systemctl restart networking
    service network restart
    service network start
    service networking restart
    
  • 网络断掉之后,在HDMI 屏幕中查看ping 192.168.2.1 自身网卡是否能通,能通,说明openwrt 起作用,就可以 将TP-Link 的网线插回交换机。另外 接光猫的网线也应当能正常拨号上网了。

  • 修复完成

3. 后续改进

  • 该方案治标不治本

    暂时没想好解决办法:不能确保 proxmox 完全能进去,如果内核启动卡住,多试着重启2次。

  • proxmox 启动网卡的部分,可以做成 sh 脚本,开机自动执行,目前暂不测试,提前写好脚本下次遇到再测试,因为开关机影响范围较大。

  • 因为openwrt 虚拟机桥接proxmox 网卡,只有proxmox 网卡启动了才能自动启动openwrt

    设置虚拟机启动延时,保证网卡先启动

    image-20230819120053047

  • 治本:目前已将openwrt 虚拟机做成备份,如果下次需要使用,可以试着重装proxmox 并导入备份虚拟机。因为之前没做过,所以这次暂时先不处理

    备份文件使用教程

    备份信息截图:

    虚拟机部分(虚拟基硬件部分)

    image-20230819142609916

    宿主机部分(网桥部分)

    image-20230819142644786

4. 注意细节

  • 文件系统的修复,我当时可能尝试了几次,多试试没问题

  • 密码的重置,在这个界面选择你要启动的系统进行重置。。。光标不要移到第二个。

    resetpvepwd_1

  • 宽带问题,先拨号上网测试,拨号通过,说明是本地设备问题。

  • 进入proxmox 要先启动网卡之后,才能连web 界面,这也是为什么要用显示器的原因

5. 密码信息

后续处理

方法1🙁 目前使用的该方法 )

  • 由于又一次软路由虚拟机的问题导致设备宕机,所以不得不提上日程,先使用命令来让设备开机之后自启动网卡。配置如下

    # 设置系统自启动, 
    nano /usr/lib/systemd/system/restart-network.service
    # 在该启动设置页面添加下方的启动配置文件。
    ##########################
    [Unit]
    Description=Restart Networking service
    After=network.target syslog.target
    Wants=network.target
    # 希望在网络初始化好了之后再执行下方命令
    
    [Service]
    Type=oneshot  # 单次执行
    ExecStart=/bin/bash -c "/bin/sleep 20 && service networking stop && /bin/sleep 10 && service networking start"  # 所执行命令,20s 后停止网络服务 10s 之后再开启网络服务
    
    [Install]
    WantedBy=multi-user.target
    ###########################
    
    # 将上方服务添加至systemctl 并开机自启动
    systemctl enable restart-network.service
    # 如果有修改,请重新加载服务
    systemctl daemon-reload
    # 测试服务的正常使用( 实际修改的时候请勿使用该命令,不然同事的网会断开,我在虚拟机测好了就不用在实体机测试了 )
    systemctl start restart-network.service
    # 可以进行重启测试。
    
  • 由于prxmox 的web 界面的开机启动延时并不能设置第一个虚拟机启动的延时。

    ( web 界面的 启动/关机顺序 是依据不同顺序的间隔来启动的。而不是第一个虚拟机启动的延时 )

    image-20230914110545093

    因此需要修改别的地方:

    参考地址

    我使用的是方法1:

    # 设置第一个虚拟机启动延时为3分钟。(足够网络等方面初始化完毕了)
    pvenode config set --startall-onboot-delay 180
    
    # 该命令的说明: 
    --startall-onboot-delay  (0 - 300) ( default = 0 ) Initial delay in seconds, before starting all the Virtual Guests with on-boot enabled.
    

此时如果公司软路由断电重启应该正常,除非高负载情况下断电破坏根文件系统。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇