web-dev-qa-db-ja.com

VM + +複数の静的IPのsystemdブリッジ

3つのパブリックIPを備えたUbuntu 18.04サーバーがあります。メインIPはすでに構成済みです。

IP2とIP3を設定したいのですが。 IP2はSSLドメインに、IP3は仮想マシン(qemu libvirt)に使用されます。問題(私にとって)は、Ubuntuの以前のバージョンがupstartを使用していて、それを構成できたことですが、現在のバージョンにはsystemdがあり、それを整理することができません。

以前は、設定に次のハウツーを使用し、すべてが正常に機能しました: https://wiki.hetzner.de/index.php/Netzkonfiguration_Debian/en#Routed_.28brouter.29

今、systemdでは、これは私が最初に使用したネットワーク構成ファイル(1 IPのみ)です。

# /etc/systemd/network/10-eno1.network
[Match] 
Name=eno1 

[Network]
Gateway=IP_GATEWAY

[Address] 
Address=IP1
Peer=IP_GATEWAY/32 

上記のファイルに追加の[Address]セクションが必要なだけなので、IP2(SSL用)の追加は簡単です。

IP3については、IP3をVMにルーティングするために、元のハウツーのようにブリッジを作成する必要があると思います。したがって、VMのqemu/libvirtブリッジを構成しようとすると、私はこの構成に非常によく似たものになりました: https://bbs.archlinux.org/viewtopic.php ?id = 193994 ie-br0デバイス+ eno1をブリッジに追加+上記のようにブリッジを構成

しかし、上記のスレッドと同様に、サーバーは到達不能になり(pingを実行できない)、診断コマンドの出力はほとんど同じです。

VMで使用するためにIP3を構成する方法に関する提案はありますか?

4
wanson

私は自分で解決策を見つけることができました。仮想KVMでテストしたところ、なんらかの理由で機能しなかったため、時間がかかりすぎました。

と仮定する:

  • IP1-サーバーのプライマリIP
  • IP2-WebサイトのSSL証明書に使用される追加のIP
  • IP3-仮想マシンに使用される追加のIP
  • eno1は私の物理イーサネットインターフェイスです

ホスト上-3つのファイル:

# /etc/systemd/network/10-virbr1.netdev
[NetDev]
Name=virbr1
Kind=bridge
MACAddress=00:1e:67:ad:8d:12

[Bridge]
STP=false

# /etc/systemd/network/20-eno1.network
[Match]
Name=eno1

[Network]
Bridge=virbr1

# /etc/systemd/network/30-virbr1.network
[Match]
Name=virbr1

[Network]
Gateway=IP_GATEWAY

[Address]
Address=IP1
Peer=IP_GATEWAY/32

[Address]
Address=IP2
Peer=IP_GATEWAY/32

仮想マシン(一部の古いUbuntu-systemdを使用しない):

# /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address IP3
    netmask 255.255.255.255
    gateway IP_GATEWAY
    pointopoint IP_GATEWAY
    dns-nameservers 8.8.8.8 1.1.1.1

追加の説明:MACAddress = 00:1e:67:ad:8d:12が必要でした。これは、ホスティング会社(Hetzner)がMACフィルタリングを行うため、ブリッジは物理イーサネットカードのMACを持つ必要があるためです。

同じ理由で、VMには、Hetznerのサーバーコントロールパネルで生成できる特定のMACアドレスが必要です。したがって、私の場合、 "virsh dumpxml my-vm"の出力は次のようになります。

...
<interface type='bridge'>
      <mac address='00:50:56:00:53:E1'/>
      <source bridge='virbr1'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
...
5
wanson