web-dev-qa-db-ja.com

Xenブリッジを設定するにはどうすればよいですか?

私は さまざまなページ を読んで、xen用のネットワークの設定方法について調べました。残念ながら、実際には完全なサンプル設定を持っているものはありません。これらは、xenbr0セクションがどのように見えるかを明確に示していますが、言及した後にeth0を変更する方法は示していません。

注意!ブリッジデバイスのIP構成は、基礎となるインターフェースのIP構成を置き換える必要があります。つまり、eth0からIP設定を削除し、ブリッジインターフェースに移動します。 eth0は、ブリッジからの物理的なアップリンクとしてのみ機能するため、IP(L3)設定を使用できません!

すべてが失敗する多くの構成を試しました(/etc/init.d/networking restartを実行した後、通常のネットワークアクセスがなく、sshを実行できない)。

現在の設定は次のとおりです。

auto lo
iface lo inet loopback

auto xenbr0
iface xenbr0 inet static
    bridge_ports eth0
    address 10.0.0.3
    netmask 255.0.0.0
    broadcast 10.255.255.255
    gateway 10.0.0.1

auto eth0
iface eth0 inet manual

おそらくそれは正しいので、iptables転送ルールを設定する必要があるだけですか?コマンドSudo iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPTを実行しようとしましたが、--physdev-is-bridgedは認識されたオプションではないというエラーメッセージを受け取りました。

ネットワークの再起動のデバッグ出力では、次の出力が得られます。

Reconfiguring network interfaces...
Waiting for xenbr0 to get ready (MAXWAIT is 32 seconds).
RTNETLINK answers: No such process
Failed to bring up xenbr0
ssh stop/waiting
ssh start/running, process 3775

Xenbr0が既に存在することを確認しました。その名前でブリッジを作成しようとすると、brctlは、既に存在するため作成できないと表示するためです。

5
Programster

最終的に、インターフェイスを作成し、iptablesルールを使用してパケットを転送するだけになりました。これは、すべてのチュートリアルで示唆されているように「ブリッジ」オプションを使用しないため、致命的な欠陥があるかどうかわかりませんか?

auto lo
iface lo inet loopback


auto xenbr0
iface xenbr0 inet static
        bridge_ports none
        address 192.168.2.1
        netmask 255.255.255.0
        network 192.168.2.0
        broadcast 192.168.2.255
        gateway 10.0.0.3


# The primary network interface
auto eth0
iface eth0 inet static
        address 10.0.0.3
        netmask 255.0.0.0
        network 10.0.0.0
        broadcast 10.255.255.255
        gateway 10.0.0.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 8.8.8.8

/etc/sysctl.confを編集し、次の行のコメントを解除する必要があります。

net.ipv4.ip_forward=1 

次に、パケットを転送するiptablesを編集するスクリプトを作成する必要があります。

Sudo /sbin/iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
Sudo /sbin/iptables --append FORWARD --in-interface xenbr0 -j ACCEPT
return 0

次に、rc.localファイルによってスクリプトが呼び出されることを確認する必要があります。

Sudo vi /etc/rc.local

次の行を追加します。

/bin/sh <path-to-script-you-just-created-here>

その後、再起動してすべての設定を有効にします。

お気づきかもしれませんが、外部LANが10.xxx上にある間、仮想マシンが192.168.2.xアドレスサブネットを使用するように設定します。あなた自身の個人的なニーズ。


更新
[。

次のようなネットワーク構成を使用すると:

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto xenbr0
iface xenbr0 inet static
        address 23.29.115.142
        netmask 255.255.255.248
        network 23.29.115.136
        broadcast 23.29.115.143
        gateway 23.29.115.137
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

(ここからコピー)

私はそれらの追加のブリッジオプションがそれを機能させた、またはインターフェースがファイルにリストされた順序(今回はブリッジの前のeth0)を推測した

3
Programster

最初にeth0を定義します。withoutゲートウェイとIPを設定します。 (それ以外の場合、システムがインターフェイスのルートを作成しようとすると「RTNETLINKアンサー:ファイルが存在します」エラーが発生します。これは、ブリッジが同じ優先度とゲートウェイでルートを作成しようとするため、それらを認識するほどスマートではないためですとにかく同じです。)

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto xenbr0
iface xenbr0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    gateway 192.168.1.1
    bridge_ports eth0
    #allow-hotplug xenbr0 #Uncomment if using vSwitches

または、ブリッジでDHCPを使用できます。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto xenbr0
iface xenbr0 inet dhcp
    bridge_ports eth0
    #allow-hotplug xenbr0 #Uncomment if using vSwitches

完了したら、再起動します。そうしないと、eth0を変更しているが新しいIPを設定していないため、ifupコマンドを使用してネットワークを再起動しても、ブリッジが適切に起動しない場合があります。これは、eth0が誤ってIPアドレスを保持する可能性があるためです。

最後に、ゲストOSのネットワークインターフェイスを、ネットワーク上の他の物理ホストであるかのように構成します。 (例1では、192.168.1.11を使用できます。)この時点で、ネットワーク上の他のデバイスがゲストに到達できるはずです。

ping 192.168.1.11 

IptablesまたはIP転送(sysctl.conf)は必要ありません。 STPが必要ですのみネットワークがSTPをサポートしており、レイヤー2ネットワークループを回避する必要があり、それを手動で処理したくない場合。 (つまり、小規模ネットワークにはbridge_stp、bridge_fd、またはbridge_maxwaitは必要ありません。)

2