OpenVPN主机具有非常大的MTU的tap设备

为了满足以下条件,我需要什么样的服务器和客户端configuration指令的最小集合?

  1. 虚拟2层以太网networking将不会与任何其他接口桥接。
  2. VPN客户端可以与任何其他VPN客户端交换帧。
  3. DHCP不是必需的(在VPN内不会使用TCP / IP)
  4. 所有在VPN上的stream量都是以太网brodcasts(实际上没有第3层+networking连接)
  5. 虚拟networking的MTU需要远远高于底层networking的MTU,这对VPN内的节点应该是透明的。 OpenVPN可以在VPN之外分割数据包 – 我认为这是通过fragmenttun-mtu指令启用的。 使用这些选项的开销不是问题。 (目标MTU是2360
  6. networking的安全不是一个问题,其目的严格来说是一个完全在软件中的以太网链路,用于物理上不相邻的节点。

我已经做了什么工作?

我有很多OpenVPN的经验,所以我相当有信心,我已经涵盖了基础知识。 但是,我似乎无法确定大的MTU尺寸要求。 VPN上的客户端可以连接,如果我configurationTCP / IP进行testing,所有客户端可以互相ping通,除非pingtesting使用不分段和数据包大小超过1472.日志没有显示任何明显的东西。

请看下面的configuration文件。

服务器configuration:

 mode server port 1195 proto udp dev tap tun-mtu 2360 fragment 1500 comp-lzo max-clients 200 client-to-client ca special-net/ca.crt cert special-net/sn-server.crt key special-net/sn-server.key dh special-net/dh1024.pem status special-net/status.log tls-server tls-auth ta.key 0 auth-user-pass-verify /bin/true via-env duplicate-cn username-as-common-name user nobody group nogroup persist-key persist-tun verb 4 

客户端configuration:

 client remote <redacted> 1195 proto udp dev tap tun-mtu 2360 fragment 1500 ca special-net/ca.crt cert special-net/sn-client.crt key special-net/sn-client.key tls-auth special-net/ta.key 1 auth-user-pass special-net/user.txt ns-cert-type server nobind user nobody group nobody persist-key persist-tun comp-lzo verb 3 resolv-retry infinite 

为什么我用OpenVPN做奇怪的事情?

我需要一种方式来分发 (而不是简单的捕获 )原始的802.11帧,因为他们通过听文章观察。 我打算通过让听文章将原来的每个802.11帧传送给VPN来完成这个任务,但是还要预先设置一个以太网报头。 以太网头将只是一个以太网广播,然后OpenVPN将分发。 802.11数据报的最大帧大小为2346个八位字节,这使我所需的MTU 2360(以太网报头增加了14个字节)。

灵感来了一夜。 看来, tun-mtu指令只是通知OpenVPN有关MTU,并不会导致OpenVPN设置自来水设备上的MTU。 通过手动设置接口上的MTU,VPN客户端可以根据需要发送和接收数据包,而不会出现分段,最多可达2360字节。

我在每个客户端和服务器上使用ip link set tap0 mtu 2360直接设置MTU。