我的主机上有 debian 7,并在其上运行 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 客户操作系统使用 br0
,其中包括eth1
。eth0
接口是故意的不是桥梁的一部分。
关于这座桥的其他信息:
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
我将非常感激您提供的任何帮助 - 提前致谢!
答案1
事实证明,您在桥接器的主机端和客户机端使用了相同的 IP 地址。(从您的问题中不可能看到这一点,因为您过去xx.xx
隐藏了部分 IP 地址;它只出现在其中一条评论中。)
桥接 IP 地址由主机使用。当物理接口(例如)eth0
添加到桥接时,它不得具有 IP 地址,并且应设置为混杂模式,以便它可以接收桥接内任何 IP 地址的流量。
网桥的客户 IP 地址是在客户机本身内定义的,就像正常eth0
情况一样。
就像网络上的两个设备必须具有不同的 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