пересылаемый TCP-трафик рефрагментируется в Linux, несмотря на флаг «Не фрагментировать»

У нас есть 2 VPN-сервера на одном хостере. Серверы виртуальные и имеют разные дистрибутивы Linux. Клиенты VPN устанавливают https-соединения с одним и тем же сервером Amazon EC2. В TCP-пакетах EC2 всегда установлен флаг «Не фрагментировать».

Хотя MTU как на физическом интерфейсе, так и на интерфейсе Tun обоих VPN-серверов равен 1500, они обычно получают пакеты большего размера от EC2. Я не уверен, как это возможно, но, возможно, это как-то связано с Virtio.

В любом случае, когда TCP-трафик перенаправляется на интерфейсы Tun, серверы ведут себя по-разному:

  • На «сервере 1» большие пакеты отбрасываются, как и ожидалось, и ICMP «Необходима фрагментация» отправляется обратно в EC2.
  • На «сервере 2» TCP-трафик рефрагментируется, но это не IP-фрагментация, а совершенно новый TCP-поток, как если бы на VPN-сервере было приложение с двумя сокетами. Флаг DF сохраняется.

Поэтому я предполагаю, что есть некоторыеsysctlнастройка, которая включает такое поведение на «сервере 2». Я прав? Где эта настройка?

Я настроил переадресацию на сервере 2 исключительно с помощьюfirewall-cmdВот конфигурация брандмауэра:

      external (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 10.8.0.0/24 10.8.1.0/24
  services: dhcpv6-client http https irc ircs openvpn smtp ssh
  ports: 1398/tcp 1194/tcp 1401/tcp 1402/tcp 65213/tcp 500/udp 501/udp
  protocols:
  forward: yes
  masquerade: yes
  forward-ports:
        port=1500:proto=tcp:toport=1500:toaddr=10.8.1.32
        port=1501:proto=tcp:toport=1501:toaddr=10.8.1.32
  source-ports:
  icmp-blocks:
  rich rules:
        rule family="ipv4" source address="10.8.1.0/24" port port="3128" protocol="tcp" accept

вывод ethtool

      localhost:~ # ethtool -k eth0
Features for eth0:
rx-checksumming: on [fixed]
tx-checksumming: on
        tx-checksum-ipv4: off [fixed]
        tx-checksum-ip-generic: on
        tx-checksum-ipv6: off [fixed]
        tx-checksum-fcoe-crc: off [fixed]
        tx-checksum-sctp: off [fixed]
scatter-gather: on
        tx-scatter-gather: on
        tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
        tx-tcp-segmentation: on
        tx-tcp-ecn-segmentation: on
        tx-tcp-mangleid-segmentation: off
        tx-tcp6-segmentation: on
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: off [fixed]
tx-vlan-offload: off [fixed]
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: on [fixed]
rx-vlan-filter: on [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: on [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-gre-csum-segmentation: off [fixed]
tx-ipxip4-segmentation: off [fixed]
tx-ipxip6-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
tx-udp_tnl-csum-segmentation: off [fixed]
tx-gso-partial: off [fixed]
tx-tunnel-remcsum-segmentation: off [fixed]
tx-sctp-segmentation: off [fixed]
tx-esp-segmentation: off [fixed]
tx-udp-segmentation: off [fixed]
tx-gso-list: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
l2-fwd-offload: off [fixed]
hw-tc-offload: off [fixed]
esp-hw-offload: off [fixed]
esp-tx-csum-hw-offload: off [fixed]
rx-udp_tunnel-port-offload: off [fixed]
tls-hw-tx-offload: off [fixed]
tls-hw-rx-offload: off [fixed]
rx-gro-hw: on
tls-hw-record: off [fixed]
rx-gro-list: off
macsec-hw-offload: off [fixed]
rx-udp-gro-forwarding: off
hsr-tag-ins-offload: off [fixed]
hsr-tag-rm-offload: off [fixed]
hsr-fwd-offload: off [fixed]
hsr-dup-offload: off [fixed]
localhost:~ #```

0 ответов

Другие вопросы по тегам