フルルートを持っているサーバー上で、kvm guestを構成し、virsh net-edit default で ipv6設定を入れたところ、 ルートをチェックしている様子で、フルルートのため時間がかかりすぎてタイムアウトし、 virsh net-start default が正常に起動できませんでした。
つづいて、network stopped時ですが、他の処理は自動で行われるのでradvdの停止とミニマムなポリシーベースルーティングを削除しています。
最後にexit 0を入れておきます。libvirt hooks では0で終了しないと異常終了とみなされるので入れています。
なお、インターネットルータではスタティックルートを設定しておきます。
virsh net-edit default --snip <ip family='ipv6' address='fd98:1:1:86::1' prefix='64'> </ip> --snip virsh net-start default error: Failed to start network default error: internal error: Unable to read /proc/net/ipv6_route for ipv6 forwarding checks調べたのですが環境が稀有なためか有効な方法は見つかりませんでした。そこで、ipv6の記述を削除し、新たに/etc/libvirt/hooks/networkに必要な記述を入れるなどすることで、kvm guest が ipv6 で通信できるようになったので、まとめておくことにしました。
# vm ホスト : /etc/libvirt/hooks/network #!/bin/bash if [ "$1" = "default" -a "$2" = "started" ];then sudo echo 0 > /proc/sys/net/ipv6/conf/virbr0/disable_ipv6 sudo ip -6 addr add fd98:1:1:86::1/64 dev virbr0 sudo systemctl restart radvd sudo ip6tables -t filter -D LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp6-port-unreachable sudo ip6tables -t filter -D LIBVIRT_FWO -i virbr0 -j REJECT --reject-with icmp6-port-unreachable sudo echo 76 virbr0 >> /etc/iproute2/rt_tables sudo ip -6 rule add from all to fd98:1:1:86::/64 tab virbr0 priority 76 sudo ip -6 rule add to all from fd98:1:1:86::/64 tab virbr0 priority 76 sudo ip -6 route add to fd98:1:1:86::/64 dev virbr0 tab virbr0 sudo ip -6 route add to default via fd98:1:1::23 dev enp2s0 tab virbr0 fi if [ "$1" = "default" -a "$2" = "stopped" ];then sudo systemctl stop radvd sudo ip -6 route del to fd98:1:1:86::/64 dev virbr0 tab virbr0 sudo ip -6 route del to default via fd98:1:1::23 dev enp2s0 tab virbr0 sudo ip -6 rule del from all to fd98:1:1:86::/64 tab virbr0 priority 76 sudo ip -6 rule del to all from fd98:1:1:86::/64 tab virbr0 priority 76 sudo sed -i '/virbr0/d' /etc/iproute2/rt_tables fi exit 0編集が済んだら、ホストを再起動してください。なお sudo ですがこれがないと処理ができませんでした。手順としては最初はipv6を有効にします。続いて radvdを起動させます。/etc/radvd.confは以下のようにしてみました。
interface virbr0 { # AdvManagedFlag on; # AdvOtherConfigFlag on; AdvSendAdvert on; MaxRtrAdvInterval 180; # AdvLinkMTU 9000; prefix fd98:1:1:86::/64 { }; RDNSS fd98:1:1::64 fd98:1:1::65 { }; # AdvRASrcAddress { # fe80::1; # }; };次はファイアーウォールを一部無効にします。続いてミニマムなポリシーベースルーティングを設定し、fd98:1:1:86::/64の通信は インターネットルータであるfd98:1:1::23を経由して通信するようにしています。network started時は以上です。
つづいて、network stopped時ですが、他の処理は自動で行われるのでradvdの停止とミニマムなポリシーベースルーティングを削除しています。
最後にexit 0を入れておきます。libvirt hooks では0で終了しないと異常終了とみなされるので入れています。
なお、インターネットルータではスタティックルートを設定しておきます。
# インターネットルータ iface enp1s0f0 inet6 static address fd98:1:1::23 netmask 56 post-up ip -6 route add fd98:1:1:86::/64 via fd98:1:1::106フルルートを持たない通常の環境では、このような手順を踏む必要はないのですが、備忘録として挙げてみました。今回は以上です。それでは。
コメント
コメントを投稿