現在、現在の設定に関する問題に直面しています。基本的に、/ 64 IPv6サブネットが割り当てられている専用サーバーがあります(2a01:4f8:221:1e81 ::/64)。そこからipv6.google.comにpingを実行できるため、ホストの接続は正常に機能しています。
また、これは構成です。
root@void ~ # ifconfig vmbr0
vmbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.250.0.1 netmask 255.255.0.0 broadcast 10.250.255.255
inet6 2a01:4f8:221:1e81:1:ffff:ffff:ffff prefixlen 80 scopeid 0x0<global>
inet6 2a01:4f8:221:1e81:212:ffff:ffff:ffff prefixlen 80 scopeid 0x0<global>
inet6 2a01:4f8:221:1e81:253:ffff:ffff:ffff prefixlen 80 scopeid 0x0<global>
inet6 2a01:4f8:221:1e81:251:ffff:ffff:ffff prefixlen 80 scopeid 0x0<global>
inet6 fe80::70a5:a1ff:fed6:8c0 prefixlen 64 scopeid 0x20<link>
ether 4a:5a:df:ab:a8:bc txqueuelen 1000 (Ethernet)
RX packets 949686094 bytes 162428268530 (151.2 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 285868499 bytes 143826674082 (133.9 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@void ~ #
ルーティングテーブル:
root@void ~ # ip -6 route show
2a01:4f8:221:1e81:1::/80 dev vmbr0 proto kernel metric 256 pref medium
2a01:4f8:221:1e81:212::/80 dev vmbr0 proto kernel metric 256 pref medium
2a01:4f8:221:1e81:251::/80 dev vmbr0 proto kernel metric 256 pref medium
2a01:4f8:221:1e81:253::/80 dev vmbr0 proto kernel metric 256 pref medium
2a01:4f8:221:1e81::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev vmbr0 proto kernel metric 256 pref medium
default via fe80::1 dev eth0 metric 1024 pref medium
root@void ~ #
仮想マシンにSSHで接続してネットワークを構成すると、問題が発生します。この例では、次の構成があります。
hypnotize@irc:~$ cat /etc/network/interfaces | tail -n4
iface eth0 inet6 static
address 2a01:4f8:101:3172:251::3
netmask 80
gateway 2a01:4f8:101.3172:251:ffff:ffff:ffff
hypnotize@irc:~$
したがって、ifconfigは次のようになります。
hypnotize@irc:~$ Sudo ifconfig
[Sudo] password for hypnotize:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.250.3.6 netmask 255.255.0.0 broadcast 10.250.255.255
inet6 fe80::9474:f1ff:fe6f:4bc3 prefixlen 64 scopeid 0x20<link>
inet6 2a01:4f8:101:3172:251::3 prefixlen 80 scopeid 0x0<global>
ether 96:74:f1:6f:4b:c3 txqueuelen 1000 (Ethernet)
RX packets 177 bytes 16270 (15.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 161 bytes 18477 (18.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<Host>
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
hypnotize@irc:~$
ルーティングテーブルが表示されている間:
hypnotize@irc:~$ ip -6 route show
2a01:4f8:101:3172:251::/80 dev eth0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
hypnotize@irc:~$
残念ながら、ping6を実行しようとすると、「接続:ネットワークに到達できません」と表示されます。 net.ipv6.conf.all.forwardingを有効にしました。
構成にエラーがありますか?前もって感謝します
タイプミスを修正しましたが、次のように表示されます。
root@irc:/home/hypnotize# ping6 ipv6.google.com
PING ipv6.google.com(fra16s20-in-x0e.1e100.net (2a00:1450:4001:821::200e)) 56 data bytes
From 2a01:4f8:101:3172:251::3 (2a01:4f8:101:3172:251::3) icmp_seq=1 Destination unreachable: Address unreachable
From 2a01:4f8:101:3172:251::3 (2a01:4f8:101:3172:251::3) icmp_seq=2 Destination unreachable: Address unreachable
From 2a01:4f8:101:3172:251::3 (2a01:4f8:101:3172:251::3) icmp_seq=3 Destination unreachable: Address unreachable
^C
--- ipv6.google.com ping statistics ---
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4032ms
root@irc:/home/hypnotize#
また、ルーティングテーブルの見栄えが良くなり、少なくともデフォルトのエントリがあります。
root@irc:/home/hypnotize# ip -6 route show
2a01:4f8:101:3172:251::/80 dev eth0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
default via 2a01:4f8:101:3172:251:ffff:ffff:ffff dev eth0 metric 1024
root@irc:/home/hypnotize#
多くの企業と同様に、Hetznerはネットワークスイッチでスイッチポートセキュリティを実行しています。つまり、許可されたMACアドレスのみがネットワークと通信できます。つまり、サーバーのNICのハードウェアアドレスは話すことができますが、仮想マシンの仮想MACアドレスは話すことができません。したがって、VMを外部に直接ブリッジすることはできません。 (追加のIPv4アドレスを注文した場合、Hetznerを使用すると、VMに割り当てることができる各アドレスの仮想MACアドレスを生成できます。これにより、このセットアップが機能しますが、追加のIPv4アドレスがない場合、またはそれらを購入したくない場合は、購入できません。)
HetznerにKVM仮想マシンホストがあり、VMはほとんどIPv6でのみ到達可能であり、これが私が設定した方法です。
ホストNICに直接ブリッジする代わりに、/ 80ごとに仮想ネットワークを作成し、それらの仮想ネットワークにVMを割り当てます。次に、ホストは、ホストNICと、ブリッジされていない(レイヤー2)がルーティングされている(レイヤー3)仮想ネットワークとの間でルーティングします。
したがって、ホストは次のように構成されます。
IPV6ADDR="2a01:4f8:150:43ea::2/64"
IPV6_DEFAULTGW="fe80::1"
Libvirt仮想ネットワークは/ 80ネットワークとして構成されます。 Virt-managerは/ 80ネットワークの作成を処理できないため、XMLを自分で作成する必要があります。次に例を示します。
<network>
<name>v6net1</name>
<forward mode='route'/>
<bridge name='v6net1' stp='on' delay='0'/>
<domain name='v6net1'/>
<ip address='192.168.101.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.101.128' end='192.168.101.254'/>
</dhcp>
</ip>
<ip family='ipv6' address='2a01:4f8:150:43ea:1::1' prefix='80'>
<dhcp>
<range start='2a01:4f8:150:43ea:1::1000' end='2a01:4f8:150:43ea:1::ffff'/>
</dhcp>
</ip>
</network>
これで、すべての仮想マシンのNICがv6net1ネットワークに追加され、DHCPv6からこの/ 80のアドレスを取得します。ただし、必要に応じて手動で割り当てることもできます。これにより、ブリッジv6net1が作成されますが、ホストNICはブリッジの一部ではありません。したがって、トラフィックはVMと外部ワールドの間でルーティングされ、ホストを離れるとき、トラフィックにはホストのMACアドレスがあります。 。
これは、グローバルIPv4接続には適用されません。マスカレードまたはポートフォワーディング。私はこれをlibvirtの外部のfirewalldで個別に処理し、libvirtのNAT機能を使用しません。VMが接続できるように単純なNAT IPv4ホストであり、着信トラフィックを必要としない場合は、代わりに<forward mode='nat'>
を使用します。純粋なIPv6のみのVMの場合、IPv4セットアップを完全に省略することもできます。