Networking OSI第2层加密

Networking OSI第2层加密,networking,encryption,ethernet,ipsec,Networking,Encryption,Ethernet,Ipsec,我目前正在参加一个附带项目,尝试使用2个linux设备来设置VPN,以进行加密/解密 目前,我使用linux框架xfrm在第3层工作(来自主机1的IP数据包在发送到主机2之前通过第一个盒子转换为ESP,解密在第二个盒子上完成) 我想直接对第二层采取行动,这样我就可以删除我的盒子的IP地址。我想我可以通过在每个盒子上建立以太网桥,使用netfilters挂钩将帧重定向到一个套接字,在这个套接字中,用户空间程序将对以太网帧有效负载进行加密(将IP数据包转换为ESP) |主机1 |==|以太网桥|==

我目前正在参加一个附带项目,尝试使用2个linux设备来设置VPN,以进行加密/解密

目前,我使用linux框架xfrm在第3层工作(来自主机1的IP数据包在发送到主机2之前通过第一个盒子转换为ESP,解密在第二个盒子上完成)

我想直接对第二层采取行动,这样我就可以删除我的盒子的IP地址。我想我可以通过在每个盒子上建立以太网桥,使用netfilters挂钩将帧重定向到一个套接字,在这个套接字中,用户空间程序将对以太网帧有效负载进行加密(将IP数据包转换为ESP)

|主机1 |==|以太网桥|==路由器---(网络不安全)---路由器==|以太网桥|=|主机2 |


这个实现的问题在于吞吐量,因为我认为所有这些操作都会大大降低吞吐量。有没有其他方法可以实现我想要的功能?

第二层只能在LAN上从主机到主机(您的路由器只是从主机到第二层)工作。第二层,包括第二层加密,不会跨越第三层设备,例如路由器。MACsec(ieee802.1AE)用于第二层加密


第3层用于连接LAN,如果您希望从一个LAN到另一个LAN进行端到端加密,则需要在高于第2层的层上进行加密。路由器从数据包中剥离第二层帧,交换数据包,然后为下一跳创建新帧。下一跳可能不使用MAC地址;PPP在ISP连接中很常见,它不使用MAC地址,并且帧与以太网非常不同。除非您控制局域网之间的所有链路,否则您需要在高层进行加密。

第2层仅在局域网上从主机到主机(您的路由器只是从主机到第2层)工作。第二层,包括第二层加密,不会跨越第三层设备,例如路由器。MACsec(ieee802.1AE)用于第二层加密


第3层用于连接LAN,如果您希望从一个LAN到另一个LAN进行端到端加密,则需要在高于第2层的层上进行加密。路由器从数据包中剥离第二层帧,交换数据包,然后为下一跳创建新帧。下一跳可能不使用MAC地址;PPP在ISP连接中很常见,它不使用MAC地址,并且帧与以太网非常不同。除非你控制局域网之间的所有链接,否则你需要在高层进行加密。

你是对的,部署第2层VPN是昂贵的(从这个意义上说,你必须为互联网带宽付费),而且大部分时间都是无用的,因为很少有应用程序不在同一局域网上就无法工作

第2层VPN的主要功能是广播,如SMB开箱即用的名称解析(如果必须连接到AD服务器或WINS服务器,则不适用)、DLNA、SPX/IPX或仅局域网的游戏将无缝工作,另一方面,你对必须传递大量可能无用信息的看法也是正确的

也许您正在寻找的解决方案是使用第2层防火墙,类似于与第3层相关的iptables,这样您可以在接受其他数据包的同时丢弃一些数据包,然后再通过VPN/internet等进行中继


PPP只是一个第二层协议,它没有什么特别之处,一些VPN网关使用它(即PPtP VPN),其他人不使用。

你是对的,部署第二层VPN是昂贵的(在这个意义上,你必须为互联网带宽付费),而且大部分时间是无用的,因为很少有应用程序不在同一局域网上就不能工作

第2层VPN的主要功能是广播,如SMB开箱即用的名称解析(如果必须连接到AD服务器或WINS服务器,则不适用)、DLNA、SPX/IPX或仅局域网的游戏将无缝工作,另一方面,你对必须传递大量可能无用信息的看法也是正确的

也许您正在寻找的解决方案是使用第2层防火墙,类似于与第3层相关的iptables,这样您可以在接受其他数据包的同时丢弃一些数据包,然后再通过VPN/internet等进行中继


PPP只是一个第二层协议,它没有什么特别之处,一些VPN网关使用它(即PPtP VPN),其他则不使用。

谢谢您的回答。我想要的只是加密以太网帧的有效负载(IP数据包),这样数据包流就不会发生任何变化,因为加密的数据包仍然有一个正确的IP头(遵循ESP rfc4303)。基本上,我只想在加密/解密设备上设置IPSec,而不需要IP地址。谢谢你的回答。我想要的只是加密以太网帧的有效负载(IP数据包),这样数据包流不会发生任何变化,因为加密的数据包仍然有一个正确的IP头(遵循ESP rfc4303)。基本上,我只想在加密/解密设备上设置IPSec,而不需要IP地址