virsh net

  1. 虛擬機網路無法啟動,錯誤訊息如下:net.ipv6.conf.wlo1.accept_ra n必須設定成 2。
    [root@dyw1 ~]# virsh net-start default
    error: Failed to start network default
    error: internal error: Check the host setup: enabling IPv6 forwarding with RA 
    routes without accept_ra set to 2 is likely to cause routes loss. Interfaces 
    to look at: wlo1
    
  2. 查詢目前 net.ipv6.conf.$netif.accept_ra 的值為 0。
    [root@dyw1 ~]# cat /proc/sys/net/ipv6/conf/wlo1/accept_ra
    0
    
  3. net.ipv6.conf.$netif.accept_ra 可能的值:
    0 Do not accept Router Advertisements.
    1 Accept Router Advertisements if forwarding is disabled.
    2 Overrule forwarding behaviour. Accept Router Advertisements even if forwarding is enabled.
    
  4. sysctl 寫入可生效。
    [root@dyw1 ~]# sysctl -w net.ipv6.conf.wlo1.accept_ra=2
    net.ipv6.conf.wlo1.accept_ra = 2
    
  5. 但重新啟動 NetworkManager 後又改回 0,因此開機時無法生效。
    [root@dyw1 ~]# systemctl restart NetworkManager
    [root@dyw1 ~]# cat /proc/sys/net/ipv6/conf/wlo1/accept_ra
    0
    
  6. 修改 libvirtd 服務的設定,在啟動服務前先將 net.ipv6.conf.wlo1accept_ra 設定成 2。
    [root@dyw1 ~]# vim /etc/systemd/system/multi-user.target.wants/libvirtd.service
    [root@dyw1 ~]# grep '^\[Service' -A5 /etc/systemd/system/multi-user.target.wants/libvirtd.service
    [Service]
    Type=notify
    EnvironmentFile=-/etc/sysconfig/libvirtd
    ExecStartPre=/usr/sbin/sysctl -w net.ipv6.conf.wlo1.accept_ra=2
    ExecStart=/usr/sbin/libvirtd $LIBVIRTD_ARGS
    ExecReload=/bin/kill -HUP $MAINPID
    
  7. 重新載入 libvirtd 服務設定。
    [root@dyw1 ~]# systemctl daemon-reload
    
  8. 重新啟動 libvirtd 服務後,net.ipv6.conf.wlo1accept_ra 設定成 2。
    [root@dyw1 ~]# systemctl restart libvirtd.service
    [root@dyw1 ~]# cat /proc/sys/net/ipv6/conf/wlo1/accept_ra
    2