在eth0-> eth1和IP-NAT eth0-eth2之间桥接802.1xstream量

概要:

给定一个具有3个物理以太网接口的Linux系统(Ubuntu 16.04):

eth0:WAN eth1:EAPoL authenticator eth2:客户端LAN

我试图configuration这个:

  • 桥br0:eth0 – eth1
  • ebtables规则只转发EAPoLstream量
  • IP NAT的剩余stream量br0 – eth2(除了types为EAPoL的以太网帧之外的所有东西)
  • eth0端口将使用伪装的mac(匹配EAPoLauthentication者)

希望的最终结果是连接到eth2的客户端计算机可以连接到WAN。 广域网需要802.1xvalidation,将桥接到连接到eth1的EAPoLvalidation器设备。

最初,我受到这篇文章的启发,但是在configuration方面却遇到了麻烦:

https://www.dslreports.com/forum/r30708210-AT-T-Residential-Gateway-Bypass-True-bridge-mode

问题:

1.)桥configuration似乎工作,tcpdump会告诉我eth1上的EAPoLstream量,但是我有麻烦得到DHCP获得DHCP信息,使用dhclient挂起。 我不知道我在这里理解vlan的目的,如果我欺骗eth0的mac是这个部分甚至是必要的?

2.)我不清楚如何将eth0 eth2之间的剩余stream量(不是EAPoL的所有内容)进行NAT转换。 我只是在接口本身之间定义一个iptables NAT,就像这样:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i eth2 -j ACCEPT iptables -A INPUT 1 -i eth2 -j ACCEPT 

我遇到的问题是,我可以configuration一个或另一个,而不是两个。 我可以让系统在eth0 eth1之间桥接EAPOL,或者我可以在eth0 eth2之间使用IP NAT,但是我不能configuration两者一起工作。 任何build议或build议?

谢谢

编辑:

ebtablesconfiguration过滤EAPoLstream量的以太网帧:

  ebtables -t filter -A FORWARD -i eth1 -p 802_1Q --vlan-encap 0x888e -j ACCEPT ebtables -t filter -A FORWARD -i eth1 -p 802_1Q -j DROP ebtables -t filter -A FORWARD -o eth1 -p 802_1Q --vlan-encap 0x888e -j ACCEPT ebtables -t filter -A FORWARD -o eth1 -p 802_1Q -j DROP