私は さまざまなページ を読んで、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は、既に存在するため作成できないと表示するためです。
最終的に、インターフェイスを作成し、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)を推測した
最初に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は必要ありません。)