![Debian 不会通过 L2TPv3 转发超过 mtu l2tp 虚拟接口](https://linux22.com/image/641756/Debian%20%E4%B8%8D%E4%BC%9A%E9%80%9A%E8%BF%87%20L2TPv3%20%E8%BD%AC%E5%8F%91%E8%B6%85%E8%BF%87%20mtu%20l2tp%20%E8%99%9A%E6%8B%9F%E6%8E%A5%E5%8F%A3.png)
R3--R1--互联网--R90
R3:IP地址10.123.0.3
R1:
sudo ip l2tp add tunnel tunnel_id 699 peer_tunnel_id 699 encap udp local 5.254.174.8
remote 5.254.174.90 udp_sport 699 udp_dport 699
sudo ip l2tp add session tunnel_id 699 session_id 699 peer_session_id 699
sudo ip link set l2tpeth0 up mtu 1446
sudo ip link add brvlan699 type bridge
sudo ip link set l2tpeth0 master brvlan699
sudo vconfig add eth1 699
sudo ip link set eth1.699 master brvlan699
sudo ip link set brvlan699 up
sudo ip a add 10.123.0.1/24 dev brvlan699
R90:
ip l2tp add tunnel tunnel_id 699 peer_tunnel_id 699 encap udp local 5.254.174.90 remote 5.254.174.8 udp_sport 699 udp_dport 699
ip l2tp add session tunnel_id 699 session_id 699 peer_session_id 699
ip link set l2tpeth0 up mtu 1446
ip link add brvlan699 type bridge
ip link set l2tpeth0 master brvlan699
vconfig add eth1 699
ip link set eth1.699 master brvlan699
ip link set brvlan699 up
ip a add 10.123.0.90/24 dev brvlan699
因此,我们有 R1 10.123.0.1、R90 10.123.0.90、R3 10.123.0.3,
每个主机都可以 ping 通。但是 R3->R90 或 R90->R3 只能 ping 最大 ICMP 数据包大小 1446 作为 mtu l2tpeth0 接口。
为什么它不分段并发送更多数据包?R1 甚至可以通过隧道向 R3 或 R90 发送 15 000B ICMP,但通过 R1 端到端 ping 只能 1446,超过则超时。如何优化此隧道的 mtu 和 mss 值(带有内部 VLAN)以及如何使其适用于具有分段的更大数据包?
答案1
http://wiki.openwrt.org/doc/howto/pseudowire
那里有你所需:
L2TPv3 的桥接器包含具有不同 MTU3 的设备。此外,由于连接是桥接的,因此不会发生路由,路由器也不会自动调整 MTU。LAN 中的所有设备通常使用 1500 的 MTU。L2TPv3 设备的 MTU 约为 1400。由于隧道本身无法分割数据包,因此所有大于 MTU 的数据包都会丢失。(...) 为了解决这个问题,使用了桥接防火墙和 TCP MSS 限制。桥接防火墙意味着当数据包通过桥接器时使用 iptables 规则。通常这不应该起作用,因为桥接器仅在第 2 层工作。但是,如果在内核中启用了桥接防火墙,则桥接器可以在第 2 层和第 3 层工作。