web-dev-qa-db-ja.com

KVMゲストはホストに接続できませんが、その逆は機能します

ホストマシンにdebian7があり、その上でKVM vmを実行します。

私のホストネットワーク構成はこれです(関連部分):

br0       Link encap:Ethernet  HWaddr 68:b5:99:ae:8f:11  
          inet addr:77.244.244.123  Bcast:77.244.245.239 Mask:255.255.255.248
          inet6 addr: fe80::6ab5:99ff:feae:8f11/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:762056 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:44471912 (42.4 MiB)  TX bytes:690 (690.0 B)

eth1      Link encap:Ethernet  HWaddr 68:b5:99:ae:8f:11  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2329129 errors:0 dropped:0 overruns:0 frame:0
          TX packets:156844 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2035457148 (1.8 GiB)  TX bytes:15978289 (15.2 MiB)
          Memory:ef060000-ef07ffff 

インターネットアクセス用の私のホストのインターフェース:

eth0      Link encap:Ethernet  HWaddr 68:b5:99:ae:8f:10  
          inet addr:146.255.255.123  Bcast:146.255.62.175  Mask:255.255.255.240
          inet6 addr: 2a02:1b8:10:68:6ab5:99ff:feae:8f10/64 Scope:Global
          inet6 addr: fe80::6ab5:99ff:feae:8f10/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19692653 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46873952 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3070321406 (2.8 GiB)  TX bytes:44921402181 (41.8 GiB)
          Memory:ef000000-ef01ffff 

私のホストはインターネット接続のインターフェースとしてeth0を使用し、私のKVMゲストOSはbr0を含むeth1を使用します。eth0インターフェースは意図的にnotブリッジの一部。

橋に関する追加情報:

bridge name   bridge id          STP enabled  interfaces
br0           8000.68b599ae8f11  no           eth1
                                              vnet0

ホストはネットワーク経由でゲストに到達できますが、ゲストはホストマシンに接続できません。私は非常に単純なものを見逃していると確信していますが、どこにも答えを見つけることができませんでした。

できるだけ多くの情報を提供するために、これもゲストのインターフェースの設定です:

eth0      Link encap:Ethernet  HWaddr 52:54:00:02:98:b7  
          inet addr:77.244.244.123  Bcast:77.244.245.239  Mask:255.255.255.248
          inet6 addr: fe80::5054:ff:fe02:98b7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:26969 errors:0 dropped:22761 overruns:0 frame:0
          TX packets:2344 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2019925 (1.9 MiB)  TX bytes:331567 (323.7 KiB)

私のホストには、次のiptablesルールがあります(私の意見では、ゲストとホストの相互通信とはまったく関係ありません)。

G-NET // root@net:/home/geruetzel# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:67
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:67

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68

私はあなたが私に与えることができるどんな助けにも感謝します-事前に感謝します!

2
geruetzel

ブリッジのホスト側にゲストと同じIPアドレスを使用していることがわかりました。 (xx.xxを使用してIPアドレスの一部を非表示にしたため、質問からこれを確認することはできません。コメントの1つでしか表示されませんでした。)

ブリッジIPアドレスはホストによって使用されます。 eth0などの物理インターフェイスをブリッジに追加する場合、IPアドレスを持たないようにする必要があります。また、ブリッジ内の任意のIPアドレスのトラフィックを受信できるように、無差別モードに設定する必要があります。

ブリッジのゲストIPアドレスは、通常のeth0タイプの状況と同様にゲスト自体の中で定義されます。

ネットワーク上の2つのデバイスが異なるIPアドレスを持つ必要があるのと同じように、ゲストとホストは異なるIPアドレスを持つ必要があります。これを明示的に言い換えると、ホストとゲストに同じIPアドレスを使用してはなりません。

ホストとゲストがこの構成でまったく通信できることに感心しました。あなたのホストがあなたのゲストと通信していると思ったとき、それは実際にそれ自身と通信していたのだろうか。


これは私のホームネットワークからの構成に基づいた縮小例です(私は現在仕事をしていません):

ホスト(192.168.1.253/24)

$ brctl show brINT
bridge name     bridge id               STP enabled     interfaces
brINT           8000.009c029758d6       no              eth1
                                                        vnet1

$ ip addr show dev brINT
5: brINT: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 00:9c:02:97:58:d6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.253/24 brd 192.168.1.255 scope global brINT

$ ip addr show dev eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master brINT state UP qlen 1000
    link/ether 00:9c:02:97:58:d6 brd ff:ff:ff:ff:ff:ff

ゲスト(192.168.1.15/24)

$ ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 52:54:00:3c:75:33 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.15/24 brd 192.168.1.255 scope global eth0
2
roaima