在 Arch Linux 上,我想让 eth0(连接到桥接路由器)共享从 wlan0 接收到的连接,我已经阅读了教程,但我不像其他用户那样精通命令,也不完全理解。
我不完全理解 NAT 和虚拟机上的桥接连接之间的区别。据我发现,如果我们建立桥接连接,与我们的主机在同一网络上的机器可以访问我们的虚拟机。
好吧,在互联网上,人们写道 NAT 和桥接虚拟机都可以像主机一样拥有 IP 地址,但是如果是 NAT,则同一网络上的机器无法访问我们的虚拟机,但如果它是桥接的,那么他们可以.
如果 NAT 和桥接连接都可以有不同的 IP 地址,那么为什么我不能访问 NAT 的地址而我可以访问桥接地址呢?
注意:说明 NAT 连接受到保护是不够的;我想知道那是怎么回事。
我找不到任何权威来源可以简明地解释网桥和交换机之间的区别。据我所知,大多数通常被称为“开关”的设备符合 IEEE 802.1D 标准定义的“桥”的描述。虽然设备可能既是网桥又是交换机(也许“交换机”是“网桥”的一个子集?),我只能找到差异的“手动”解释。我遇到的最常引用的差异归结为以下两个之一:
我对这些答案不满意,因为:
事实上,当我搜索IEEE 802.1D标准时,根本没有提到“开关”这个词。所以“桥”似乎是技术上正确的术语。然而,由于单词“开关”似乎更常用(由远)我不禁怀疑是否有是一些实际的差异化因素。或者这只是用不同的词来描述同一件事的情况?
特别感谢对来源的引用。
编辑:我应该补充一点,我完全意识到网桥与中继器不同的事实。
我在 Mac 的虚拟机中运行 Windows 7。我主要将 Windows 7 用于 Visual Studio,也用于托管 IIS 的开发安装。我需要两件事,我不确定需要什么网络模式......
我需要能够从 Mac 通过 HTTP 访问 IIS 服务器(在 VM 上运行)。
虚拟机上的 Web 浏览器需要能够访问 Internet。
有什么建议?谢谢。
我已经安装的以太网桥br0
,它包含两个接口eth0
和tap0
brctl addbr br0
brctl addif eth0
brctl addif tap0
ifconfig eth0 0.0.0.0 promisc up
ifconfig tap0 0.0.0.0 promisc up
ifconfig br0 10.0.1.1 netmask 255.255.255.0 broadcast 10.0.1.255
Run Code Online (Sandbox Code Playgroud)
我的默认FORWARD
连锁政策是DROP
iptables -P FORWARD DROP
Run Code Online (Sandbox Code Playgroud)
当我不添加以下规则时,流量不会通过桥。
iptables -A FORWARD -p all -i br0 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
据我了解iptables
只负责IP层。
ebtables
应该负责过滤以太网桥上的流量。
那么为什么我必须在 iptable 的 FORWARD 链中添加 ACCEPT 规则呢?
这个问题让我发疯。我运行全新安装的 Ubuntu 18.04,使用:
我尝试了股票 docker.io 包和包形成 docker 自己的 deb 存储库。
我希望能够部署 docker 容器,选择 ip 来绑定其端口(例如 -p 10.58.26.6:98800:98800),然后使用 UFW 打开端口。
但是 docker 似乎创建了干扰 br0 桥的 iptables 规则(例如,主机无法 ping libvirt 来宾)
我环顾四周,找不到好的、具有安全意识的解决方案。
手动操作iptables -I FORWARD -i br0 -o br0 -j ACCEPT
似乎可以使一切正常。
"iptables": false
docker 守护进程的设置也允许网桥正常运行,但会破坏 docker 的容器出口网络。
我发现这个解决方案看起来很简单,通过编辑单个 UFW 的文件/sf/answers/3621911961/,但它根本不起作用。
永久解决这个问题的最佳实践和安全方法是什么,幸免于重新启动?
编辑:
我结束了加-A ufw-before-forward -i br0 -o br0 -j ACCEPT
在年底/etc/ufw/before.rules
前提交。我可以将其视为解决方案还是不会引起一些问题?
我有一个运行 linux 的机器人,带有有线和无线适配器。当我启动时,它连接到无线网络正常。当我为有线(静态或使用 DHCP)分配 IP 时,它看起来可以正常工作。如,ifconfig
显示正确的 IP 并route
显示正确的路由。但是,当我对有线 IP 进行 ARP 请求时,ARP 回复包含无线 MAC。
???机器人上没有桥接器,为什么我没有有线MAC???
断线时,有线IP回复ping...
为什么机器人通过无线接口回复有线 IP 请求???
编辑:同一 IP 子网上的有线和无线适配器。我从同一 IP 子网上的一台计算机(用不同的计算机尝试过)发出 ARP 请求。
相关的 ifconfig 输出:
eth0 Link encap:Ethernet HWaddr 00:01:C0:04:BD:F7
inet addr:192.168.0.110 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
ra0 Link encap:Ethernet HWaddr 24:3C:20:06:3E:6D
inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在主机上设置多个 LXC 容器,每个容器都有自己的公共静态 IP。
我的主机正在运行最新的 Ubuntu。它有一个名为 eth0 的网络接口。静态 IP 可从 Internet 上 ping 并命名为 eth0:210、eth0:211... 冒号后的数字是地址的最低有效字节。除了这些接口之外,我还在主机的公共 IP 上设置了 br0。还有 lo、veth2LPP9A 和 lxcbr0 接口。lxcbr0 具有私有 IP 的地址。
主机 /etc/network/interfaces 看起来像:
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
[...]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经使用了各种在线资源,包括桥接 LXC 容器来托管 eth0,这样它们就可以拥有一个公共 IP来帮助我进行设置。
容器的配置文件有:
lxc.network.type = veth
lxc.network.link = br0
Run Code Online (Sandbox Code Playgroud)
我已经从这个文件中删除了静态 lxc.network.ipv4 配置,因为它会导致问题。当我使用此配置运行 lxc-ls --fancy 时,我会在输出中看到两次相同的公共 IP。此外,它会干扰容器 /etc/network/interfaces 的子网配置。
说到容器的接口文件,它看起来有点像:
auto eth0
iface eth0 inet static
address [...]
netmask 255.255.255.255
#gateway [...]
dns-nameservers 8.8.8.8
post-up route …
Run Code Online (Sandbox Code Playgroud) 背景资料
我有一个带有两个运行 Docker 的网络接口的服务器。Docker 和一些虚拟化工具一样,创建了一个名为docker0
. 默认情况下,此接口配置了一个 IP,172.17.42.1
所有 Docker 容器都使用此接口作为网关进行通信,并分配了相同/16
范围内的IP 地址。据我了解,所有进出容器的网络流量都经过 NAT,因此出站流量似乎来自172.17.42.1
,入站流量则发送到172.17.42.1
.
我的设置看起来像这样:
+------------+ /
| | |
+-------------+ Gateway 1 +-------
| | 10.1.1.1 | /
+------+-------+ +------------+ |
| eth0 | /
| 10.1.1.2 | |
| | |
| DOCKER HOST | |
| | | Internet
| docker0 | |
| (bridge) | |
| 172.17.42.1 | |
| | |
| eth1 | |
| 192.168.1.2 …
Run Code Online (Sandbox Code Playgroud) 我正在使用带有桥接网络的 qemu/kvm。在主机中有几个没有 IP 的“vnetX”网络接口。我正在寻找一种方法来了解哪个 vnetX 属于虚拟机。
我尝试将这些接口上的 MAC 地址值与虚拟机上的 MAC(或定义它们的 XML)匹配,但不匹配。
有 brctl show 显示属于网桥的 vnet 接口,但这不是有用的信息。
有没有办法知道这种关系?谢谢!!