OpenVPN 到主机分接设备的 MTU 非常大

OpenVPN 到主机分接设备的 MTU 非常大

问题

为了满足以下条件,我需要的最少服务器和客户端配置指令集是什么?

  1. 虚拟第 2 层以太网网络不会与任何其他接口桥接。
  2. VPN 客户端可以与任何其他 VPN 客户端交换帧。
  3. 不需要 DHCP(VPN 内不使用 TCP/IP)
  4. VPN 上的所有流量都将是以太网广播(实际上没有 3 层以上的网络)
  5. 虚拟网络的 MTU 需要比底层网络的 MTU 高得多,并且这对于 VPN 内的节点应该是透明的。OpenVPN 可以自由地在 VPN 之外对数据包进行分段——我认为这是通过和fragment指令启用的tun-mtu。使用这些选项的开销不是问题。(目标 MTU 是2360
  6. 网络安全不是问题——它的目的是严格对于物理上彼此不接近的节点来说,它是一个完全软件以太网链路。

我已完成哪些工作?

我对 OpenVPN 有丰富的经验,因此我很有信心我已经掌握了基础知识。但是,我似乎无法确定较大的 MTU 大小要求。VPN 上的客户端可以连接,如果我配置 TCP/IP 进行测试,则所有客户端都可以相互 ping 对方,除非使用不分段和数据包大小高于 1472 进行 ping 测试。日志没有显示任何明显的信息。

请参阅以下配置文件。

服务器配置:

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

客户端配置:

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 个额外字节)。

答案1

灵感一夜之间涌现。看来该tun-mtu指令只是向 OpenVPN 告知 MTU,并不会导致 OpenVPN 在 Tap 设备本身上设置 MTU。手动设置 Tap 接口上的 MTU 使 VPN 客户端能够发送和接收数据包,而无需分段,最多可达到我要求的 2360 字节。

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

相关内容