我有一台运行 CentOS 6.5 的物理服务器,有一个接口连接到 Internet(有一个公共 IP 地址)。在这台服务器中,我通过 libvirt 使用 KVM 创建了两个虚拟机,每个虚拟机都有一个接口。我想为每个 VM 分配一个公共 IP 地址并继续使用与物理服务器的连接。
我尝试了各种方法,比如添加一个带有brctl服务器物理接口和两个 VM 虚拟接口的 Linux 桥接器,但它不起作用,我失去了与物理服务器的连接。
我愿意使用 Linux 网桥或 libvirt 网络。
如何在虚拟机和物理服务器中获取公共 IP 地址?
我建立了一个br0“附加”到两个接口的网桥:
eth0,我的物理接口连接到真正的局域网, vnet0,一个 KVM 虚拟接口(连接到 Windows VM)。 我在前向链中有这个单一的防火墙规则:
iptables -A FORWARD -j REJECT
Run Code Online (Sandbox Code Playgroud)
现在,唯一有效的 ping 是从 VM 到主机。
该br0接口拥有我主机的 IP 地址。eth0而vnet0没有“拥有”任何IP,从主机点。Windows VM 具有静态 IP 配置。
如果将我的iptables规则更改为ACCEPT(甚至使用更严格的iptables -A FORWARD -o br0 -j ACCEPT),则一切正常!(即我可以从 VM ping 任何 LAN 机器,反之亦然)。
所有 IP 转发内核选项都被禁用(如net.ipv4.ip_forward = 0)。
那么,netfilter 防火墙如何阻止甚至没有启用的东西?
此外,VM-LAN 流量应仅暗示eth0和vnet0。然而,它看起来像是允许带有-o br0“作品”的FORWARD 流量(虽然我没有仔细检查)。
如果没有 IP 地址,网桥(或交换机)不应该工作吗?我相信我可以在没有 IP 地址的情况下和作为成员进行桥接br0设置。eth0eth1
我不明白为什么地址应该分配给br0?
当我使用 KVM 时,我创建了一个名为virbr0的虚拟网桥,还有一个名为virbr0-nic的网桥。即使在我禁用并删除virbr0 之后,virbr0-nic仍然存在。
谁能给我解释一下这是什么?
谢谢你。
我有一个 Linux 内核虚拟桥,它包含接口eth1和tap0:
# brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.00016c404fa3 no eth1
tap0
#
Run Code Online (Sandbox Code Playgroud)
现在,当我查看虚拟交换机的 MAC 地址表时,它显示端口号2(tap0接口)和3(eth1接口):
# brctl showmacs br0
port no mac addr is local? ageing timer
3 00:00:5e:00:01:c9 no 0.11
3 00:01:6c:40:2d:94 no 0.53
3 00:01:6c:40:4f:a3 yes 0.00
3 00:01:6c:55:3a:72 no 55.33
3 00:02:b3:8d:48:a7 no 0.53
3 00:0a:e4:2f:53:bb no 0.59
3 00:0b:82:0a:bc:cc no 16.98
3 00:0c:29:07:3e:de no 9.12
3 …Run Code Online (Sandbox Code Playgroud) 我正在尝试建立一个系统,将未标记的以太网网络加入 TAP 隧道,在流量移动到隧道时添加 VLAN 标记。
到目前为止,我有:
eth0 - 承载未标记流量的物理以太网接口。tap1 - TAP 隧道接口。br0- 一个包含tap1(和一些其他物理接口)的网桥我知道我可以通过执行以下操作在以太网端添加 VLAN 标记:
$ ip link add link eth0 name eth0.5 type vlan id 5
$ brctl addif br0 eth0.5
Run Code Online (Sandbox Code Playgroud)
但是我怎么能反过来呢?
编辑我发现我可以做到这一点:
$ ip link add veth0 type veth peer name veth1
$ ip link add link veth0 name veth0.5 type vlan id 5
$ brctl addif br0 veth0.5
$ brctl addbr br1
$ brctl addif br1 eth0
$ brctl addif …Run Code Online (Sandbox Code Playgroud) 我有一个 4 端口网桥:
root@Linux-Switch:~# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000024cd2cb0 no eth0
eth1
eth2
eth3
Run Code Online (Sandbox Code Playgroud)
我的目标是限制eth2接口的上传速度。(eth0 是上行交换机的上行接口)。我一直在尝试通过 tc 和 iptables 来做到这一点。
# tried in both the filter table and mangle table
iptables -A FORWARD -t mangle -m physdev --physdev-in eth2 -j MARK --set-mark 5
tc qdisc add dev eth0 root handle 1:0 htb default 2
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 1mbit ceil 1mbit
tc class add dev eth0 parent …Run Code Online (Sandbox Code Playgroud) 我在物理以太网接口eth0和 OpenVPN 的虚拟接口之间设置了一个网桥tap0。网桥有一个 IP 地址,可以从任一接口通过该 IP 地址联系机器。但是,我不知道要配置什么才能使流量在接口之间通过网桥流动。
是否net.ipv4.ip_forward = 1需要设置为桥接,还是只是路由所需的设置?
我应该如何配置FORWARD链iptables?理想情况下,应该只转发接口之间的流量,这样机器就不能用作网络内的反弹点。
我正在运行 CentOS 7。我没有运行 NetworkManager,我实际上已经卸载了它。
我的系统应该br0在启动时通过 DHCP 获取 IPv4 地址。但是,当我登录时,它没有地址。
我的配置:
# pwd
/etc/sysconfig/network-scripts
# cat ifcfg-enp5s0
DEVICE=enp5s0
ONBOOT="yes"
BRIDGE=br0
# cat ifcfg-br0
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=dhcp
STP=on
DELAY=0
Run Code Online (Sandbox Code Playgroud)
请注意,我没有手动配置此网桥;virt-manager当我br0在此对话框中添加时这样做:

相关journalctl --boot | grep '\(\<br0\>\|enp5s0\)'和上下文:
Jan 08 21:04:32 jonathon-centos7 kernel: r8169 0000:05:00.0 enp5s0: link down
Jan 08 21:04:32 jonathon-centos7 kernel: IPv6: ADDRCONF(NETDEV_UP): enp5s0: link is not ready
Jan 08 21:04:32 jonathon-centos7 kernel: r8169 0000:05:00.0 enp5s0: link down
Jan 08 21:04:32 jonathon-centos7 kernel: device …Run Code Online (Sandbox Code Playgroud) 目前我工作的大楼中的以太网端口已关闭,但 Wi-Fi 工作正常。我有一台支持 Wi-Fi 的笔记本电脑(Ubuntu 14.04 LTS(Trusty Tahr))和一个不支持 Wi-Fi 的工作站(Debian 8(Jessie)),只有一个以太网插头。
是否可以通过以太网电缆将两者连接起来并能够在工作站上获得网络连接?