我正在尝试使用 2 个以太网接口设置 Linux 网桥,但无法使其正常工作。我正在使用 Gentoo Linux 并认为这会很容易,但我最终无法让数据包通过网桥。在 Hyper-V 下虚拟化的所有内容对任何事情都很重要(但我对此表示怀疑)。
这是我的配置。
------ ------------------ -------- -----------
| NUX3 |------------|eth1 BRIDGE eth0|---------| ROUTER |-------/ INTERNET /
------ ------------------ -------- -----------
192.168.1.195/24 192.168.1.197/24 (br0) 192.168.1.101/24
00:15:5d:00:01:12 00:15:5d:00:01:08 (eth0) 00:15:5d:00:01:03
00:15:5d:00:01:13 (eth1)
Run Code Online (Sandbox Code Playgroud)
# cat /etc/conf.d/net
bridge_br0=( "eth0 eth1" )
config_eth0=( "null" )
config_eth1=( "null" )
config_br0=( "192.168.1.197 netmask 255.255.255.0 brd 192.168.1.255" )
routes_br0=( "default via 192.168.1.101" )
Run Code Online (Sandbox Code Playgroud)
# brctl 显示
bridge name bridge id STP enabled interfaces
br0 8000.00155d000108 no eth0
eth1
Run Code Online (Sandbox Code Playgroud)
# brctl …
我正在尝试在ebtables 中创建IP-MAC配对规则。可用的教程和相关问题 [1] 很少,但我有一些特定的设置。
环境: 我有很多物理主机。每个主机都有很少的以太网卡,以绑定方式加入并用作桥接器的从属设备。每个主机上有很多虚拟机(kvm、qemu、libvirt)。每个虚拟机都通过名为 vnet[0-9]+ 的新端口连接到其物理主机的网桥。没有 NAT。网络工作正常,所有物理主机都可以 ping 通,所有虚拟机也可以。每个虚拟机都有自己的 IP 地址和 MAC 地址。
问题:在虚拟机内部,IP 地址可以更改为另一个。
找到的解决方案:在 ebtables 站点 [2] 上有已知的解决方案,但是当仅使用一台主机时,此解决方案适用。它允许所有流量,如果来自 IP 的数据包的 MAC 不是允许的,则数据包将被丢弃。如果有多个主机,则需要在所有主机上注册所有现有的 IP-MAC 对。需要逆向策略解决方案。
精心设计的解决方案:我试图以相反的方式使用 ebtables。这是我尝试过的示例。
例 1
Bridge table: filter
Bridge chain: INPUT, entries: 2, policy: DROP
-i bond0 -j ACCEPT
-p IPv4 -s 54:52:0:98:d7:b6 --ip-src 192.168.11.122 -j ACCEPT
Bridge chain: FORWARD, entries: 0, policy: ACCEPT
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
Run Code Online (Sandbox Code Playgroud)
例2
Bridge table: …Run Code Online (Sandbox Code Playgroud) 我已经设置了一个 linux 机器(在 esxi5 上),它充当 OpenVPN 服务器。服务器配置为对客户端使用桥接,这基本上可以工作,但有一个例外。
如果客户端 ping 网络上的某些机器而不是服务器本身,则它不起作用。我排除了我所知道的一切(iptables 等)并运行 tcpdump 将其归结为以下内容:
问题:为什么br0设备不转发ARP回复给tap0设备?
更新:
我在那里找到了解决方案:http : //www.linuxfoundation.org/collaborate/workgroups/networking/bridge#No_traffic_gets_trough_.28except_ARP_and_STP.29
# cd /proc/sys/net/bridge
# ls
bridge-nf-call-arptables bridge-nf-call-iptables
bridge-nf-call-ip6tables bridge-nf-filter-vlan-tagged
# for f in bridge-nf-*; do echo 0 > $f; done
Run Code Online (Sandbox Code Playgroud)
但我想就此获得专家意见:禁用所有 bridge-nf-* 是否安全?他们来这里做什么?
更新结束
我需要将 LXC 容器桥接到主机的物理接口 (eth0),阅读有关该主题的大量教程、文档和博客文章。
我需要容器拥有自己的公共 IP(我以前做过 KVM/libvirt)。
经过两天的搜索和尝试,我仍然无法使其与 LXC 容器一起使用。
主机运行新安装的 Ubuntu Server Quantal (12.10),仅安装了 libvirt(我没有在此处使用)和 lxc。
我创建了容器:
lxc-create -t ubuntu -n mycontainerRun Code Online (Sandbox Code Playgroud)
所以他们也运行 Ubuntu 12.10。
/var/lib/lxc/mycontainer/config 的内容是:
lxc.utsname = mycontainer
lxc.mount = /var/lib/lxc/test/fstab
lxc.rootfs = /var/lib/lxc/test/rootfs
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.veth.pair = …Run Code Online (Sandbox Code Playgroud) 如何在远程机器上的真实 eth 卡之间设置桥接,而不会丢失与该机器的 ssh 连接。
我通过 eth1 iinterface ssh 进入一台机器。172.168.40.2 255.255.255.0。
我想将 eth1 加入 tun/tap 设备“tun0”。如何在不关闭 eth1 并丢失 ssh 连接的情况下执行此操作。
tunctl -u root
brctl addbr br0
brctl addif br0 tun1
brctl addif br0 eth1
Run Code Online (Sandbox Code Playgroud)
结果,连接将丢失
我正在构建一个基于 iptables 的防火墙配置工具,并试图让“线路中的颠簸”场景工作。
给定一个设置有eth0和eth1在桥梁br0和第三界面eth2:
| | |
eth0 eth1 eth2
| == br0== | |
| |
| |
--- linux node ---
Run Code Online (Sandbox Code Playgroud)
在这种情况下,假设我希望 TCP 端口 80 流量在进入连接到的网络时被丢弃eth0,但允许它进入eth1.
因此,我试图可靠地匹配通过特定接口发出的数据包eth0。
如果我在filter表中添加以下 iptables 规则:
-A FORWARD -o br0 --physdev-out eth0 -j LOG
Run Code Online (Sandbox Code Playgroud)
给定一个来自eth1(桥的另一半)的数据包,那么规则匹配得很好,记录:
... IN=br0 OUT=br0 PHYSIN=eth2 PHYSOUT=eth1 ...
Run Code Online (Sandbox Code Playgroud)
但是,如果数据包来自eth2,则规则不再匹配。
我似乎路由算法无法确定选择哪个桥接接口,因此数据包通过桥接器中的两个接口发送出去。
如果我添加另一个更混杂的日志规则,那么我会得到该数据包的以下日志输出:
... IN=eth2 OUT=br0 ...
Run Code Online (Sandbox Code Playgroud)
我的猜测是,在第一种情况下,路由算法可以只选择网桥上的另一个接口,因为该数据包不应该按照它来的方式出去。在第二种情况下,它没有选择特定的接口,然后您根本没有得到 physdev 信息!
但是,如果网桥已获知目标 MAC 地址(如 …
在 Fedora 或 CentOS 上安装 KVM 时,它会创建virbr0,但我看不到en0桥接器的任何部分。
问题
有没有命令可以查看网桥的成员?
作为一般虚拟化的新手,对 Linux 有点陌生(使用 Debian Squeeze 并且来自 BSD)我很难理解什么是我的主机的最佳网络桥接选项。许多(如果不是全部)网络上的信息似乎有些过时。
有关于 br0、tun、tap 和 vnet 等的信息。我对他们的意思和所做的事情几乎一无所知,如果有知识渊博的人能帮我把它简单化,我将不胜感激。
我想要的是我的 Debian 主机的最佳性能和灵活设置,其中 (*BSD) 来宾可以管理他们自己的防火墙 (PF)。Squeeze 主机在一个合适的硬件路由器后面有两个硬件 NIC。
在这一点上,我认为将客人放在他们自己的专用硬件 nic (eth1) 上并使用内部 ip 范围 (10.0.0.x) 而主机使用 eth0 是明智的,但我非常愿意接受来自专家:)
将网络适配器添加到网桥时,它会从未桥接的其中一个生成新的 MAC 地址,但设置了本地管理位。
例如,如果原来的 MAC 地址是 00-aa-bb-cc-dd-ee,那么新的桥 MAC 地址就是 02-aa-bb-cc-dd-ee。
有什么办法可以防止设置这个位吗?
我有一个带有 3 个 KVM-Guest CentOS 6.5 的 CentOS 6.5 KVM 主机。现在我想使用单个网络接口为主机分配一个公共 IP,为每个来宾分配一个公共 IP。我的 IP(由网络管理员分配)是:
掩码:255.255.254.0
网关 10.25.146.9
这是一张图片,可以更好地解释我的情况:

我是 linux 的新手,所以请帮助我 :)
提前致谢