mirror of
https://github.com/qdm12/gluetun.git
synced 2026-05-07 04:20:12 +02:00
Path MTU discovery fixes and improvements (#3109)
- Existing option `WIREGUARD_MTU` , if set, disables PMTUD and is used - New option `PMTUD_ICMP_ADDRESSES=1.1.1.1,8.8.8.8` and `PMTUD_TCP_ADDRESSES=1.1.1.1:443,8.8.8.8:443` - ICMP PMTUD now targets external-by-default IP addresses - New TCP PMTUD (binary search only) as a second MTU confirmation and fallback mechanism. - Force set TCP MSS to MTU - IP header - TCP base header - "magic 20 bytes" 🎆 - Fix #3108
This commit is contained in:
@@ -18,6 +18,7 @@ type Route struct {
|
||||
Type uint8
|
||||
Scope uint8
|
||||
Proto uint8
|
||||
AdvMSS uint32
|
||||
}
|
||||
|
||||
func (r *Route) fromMessage(message rtnetlink.RouteMessage) {
|
||||
@@ -35,6 +36,9 @@ func (r *Route) fromMessage(message rtnetlink.RouteMessage) {
|
||||
r.Type = message.Type
|
||||
r.Scope = message.Scope
|
||||
r.Proto = message.Protocol
|
||||
if metrics := message.Attributes.Metrics; metrics != nil {
|
||||
r.AdvMSS = metrics.AdvMSS
|
||||
}
|
||||
}
|
||||
|
||||
func (r Route) message() *rtnetlink.RouteMessage {
|
||||
@@ -58,7 +62,6 @@ func (r Route) message() *rtnetlink.RouteMessage {
|
||||
Protocol: r.Proto,
|
||||
Attributes: rtnetlink.RouteAttributes{
|
||||
OutIface: r.LinkIndex,
|
||||
Dst: *dst, // there should always be a dst for routes
|
||||
Gateway: netipAddrToNetIP(r.Gw),
|
||||
Priority: r.Priority,
|
||||
Table: extendedTable,
|
||||
@@ -67,6 +70,15 @@ func (r Route) message() *rtnetlink.RouteMessage {
|
||||
if src != nil { // src is optional
|
||||
message.Attributes.Src = *src
|
||||
}
|
||||
if dst != nil {
|
||||
message.Attributes.Dst = *dst
|
||||
}
|
||||
if r.AdvMSS != 0 {
|
||||
if message.Attributes.Metrics == nil {
|
||||
message.Attributes.Metrics = &rtnetlink.RouteMetrics{}
|
||||
}
|
||||
message.Attributes.Metrics.AdvMSS = r.AdvMSS
|
||||
}
|
||||
return message
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user