情况:
networkingA < – >服务器< – >客户端主机
我想允许客户端主机通过网桥访问networkingA,允许两台主机通过一个以太网连接访问networkingA.
这些都是物理设备,我正在使用Linux / Ubuntu机器。
于是我创build了一个网桥ntlbridge0并且在服务器上ntlbridge0两个以太网设备eth0 (到networkingA)和eth1 (到客户端)。
服务器和客户端都通过DHCP获取IP地址。 (由路由器的Mac地址分配)
我应该如何设置这个连接,以便客户端可以从networking获取DHCP租约?
当客户端正在尝试连接时,它还没有IP地址,所以我不知道如何制定一个防火墙规则来允许来自eth1到eth0stream量,而不会给ufw / iptables一个IP地址来伪装或转发至。
理想情况下,我希望服务器和客户端对同一级别的networkingA可见。 (每个应该有自己的IP,所以networkingpipe理员的“共享互联网”将不起作用。)和客户端的MAC地址应该是可见的networking(以便它从路由器得到正确的IP。
我早些时候做了这个工作(现在我不能确定),但是现在即使在禁用防火墙并重新创build连接之后,我也不能再继续工作了。
更多细节:
在服务器上:
路线 内核IP路由表 目标网关Genmask标志度量参考使用Iface 默认192.168.10.1 0.0.0.0 UG 426 0 0 ntlbridge0 192.168.10.0 * 255.255.255.0 U 425 0 0 ntlbridge0 192.168.10.0 * 255.255.255.0 U 426 0 0 ntlbridge0 nmcli开发状态 设备types状态连接 ntlbridge0桥连接桥ntl enp1s0f0以太网连接ntlbridge0从站enp1s0f0 enp1s0f1以太网连接ntlbridge0从站enp1s0f1
请求进一步信息:
IP链接显示
1:lo:mtu 65536 qdisc noqueue state UNKNOWN模式默认组默认qlen 1
链接/回放00:00:00:00:00:00 brd 00:00:00:00:00:00
2:enp1s0f0:mtu 1500 qdisc mq master ntlbridge0状态UP模式DEFAULT组默认qlen 1000
link / ether d0:27:xx:xx:xx:40 brd ff:ff:ff:ff:ff:ff
3:enp1s0f1:mtu 1500 qdisc mq master ntlbridge0状态UP模式DEFAULT组默认qlen 1000
link / ether d0:27:xx:xx:xx:41 brd ff:ff:ff:ff:ff:ff
9:ntlbridge0:mtu 1500 qdisc noqueue状态UP模式DEFAULT组默认qlen 1000
link / ether d0:27:xx:xx:xx:40 brd ff:ff:ff:ff:ff:ff
IP地址显示
1:lo:mtu 65536 qdisc noqueue state UNKNOWN组默认qlen 1
链接/回放00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8作用域主机lo
永远永远的preferred_lft永久valid_lft
inet6 :: 1/128作用域主机
永远永远的preferred_lft永久valid_lft
2:enp1s0f0:mtu 1500 qdisc mq master ntlbridge0状态UP组默认qlen 1000
link / ether d0:27:xx:xx:xx:40 brd ff:ff:ff:ff:ff:ff
3:enp1s0f1:mtu 1500 qdisc mq master ntlbridge0状态UP组默认qlen 1000
link / ether d0:27:xx:xx:xx:41 brd ff:ff:ff:ff:ff:ff
9:ntlbridge0:mtu 1500 qdisc noqueue状态UP组默认qlen 1000
link / ether d0:27:xx:xx:xx:40 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.67/24 brd 192.168.10.255范围全局dynamicntlbridge0
valid_lft 50187sec preferred_lft 50187sec
inet6 2601:844:4000:xxx:xxx:xxxx:xxxx:ac61 / 64作用域全局noprefixroutedynamic
valid_lft 2367sec preferred_lft 2367sec
inet6 fe80 :: 1e94:xxxx:xxxx:77ba / 64作用域链接
永远永远的preferred_lft永久valid_lft
ip路由显示
默认通过192.168.10.1 dev ntlbridge0 proto静态指标425
172.17.0.0/16 dev docker0 proto kernel scope链接src 172.17.0.1 linkdown
192.168.10.0/24 dev ntlbridge0 proto内核作用域链接src 192.168.10.67 metric 425
192.168.10.0/24 dev ntlbridge0 proto内核作用域链接src 192.168.10.67 metric 426
192.168.122.0/24 dev virbr0 proto kernel scope链接src 192.168.122.1 linkdown
brctl显示
网桥名称bridge id STP使能的接口
docker0 8000.0242910e3b7a no
ntlbridge0 8000.d027xxxxxx40是enp1s0f0
enp1s0f1
Soooooooo这里有个关于在现代内核中进行桥接的有趣的事情……你可以告诉内核通过iptables发送通过网桥的数据包,并且它们被看作是完全一样的,就好像它们在第3层被转发一样。你真的想要这个,但一些发行版或内核版本或默认情况下(默认情况下可能为了安全,这是可以理解的,如果感到沮丧的话)。
检查sysctls /proc/sys/net/bridge/bridge-nf-call-* 。 如果其中任何一个为1 ,则使用相应的过滤系统来匹配数据包(用于IPv4数据包的iptables ,用于IPv6数据包的ip6tables )。 将它们设置为0来closures这个东西,你会看到一个愉快的改进。
在你的问题中确实没有足够的信息来确定发生了什么事情,但bridge-nf-call-* sysctl始终是我在桥接播放时所看到的第一位。
除此之外,不涉及所有涉及的接口,几乎不可能知道发生了什么事情,问题可能在哪里。