Linux MTU 불일치(MTU Mismatch) 문제의 심화 분석 및 해결 방법

Linux 서버에서는 Ping은 정상적으로 동작하지만 특정 웹사이트가 열리지 않거나, 대용량 파일 전송이 중간에 끊기거나, VPN 연결이 불안정한 현상이 발생하는 경우가 있습니다. 이러한 문제는 단순한 네트워크 장애가 아니라 MTU(MTU Mismatch) 설정이 서로 맞지 않아 발생하는 경우가 많습니다.

MTU(Maximum Transmission Unit)는 한 번에 전송할 수 있는 최대 패킷 크기를 의미합니다. 네트워크 경로 중 하나라도 MTU가 다르면 패킷 단편화(Fragmentation)나 패킷 손실이 발생하여 통신 품질이 크게 저하될 수 있습니다.

이번 글에서는 Linux에서 MTU 불일치 문제가 발생하는 원인과 확인 방법, 해결 방법을 실무 중심으로 자세히 알아보겠습니다.

MTU란?

MTU는 네트워크 인터페이스가 한 번에 전송할 수 있는 최대 데이터 크기입니다.

일반적인 Ethernet 환경에서는 다음과 같습니다.

Ethernet MTU : 1500 Bytes

Jumbo Frame : 9000 Bytes

만약 서버는 MTU 9000을 사용하고 중간 스위치는 1500만 지원한다면 패킷이 정상적으로 전달되지 않을 수 있습니다.

MTU 불일치가 발생하는 주요 원인

대표적인 원인은 다음과 같습니다.

  • Jumbo Frame 설정 불일치
  • VPN 터널 사용
  • VLAN 환경
  • Docker Overlay Network
  • Kubernetes CNI
  • GRE Tunnel
  • VXLAN 환경
  • IPSec VPN
  • Cloud Network 제한
  • Switch MTU 설정 오류

실무에서는 VPNJumbo Frame 설정 오류가 가장 흔한 원인입니다.

1. 현재 MTU 확인하기

현재 인터페이스의 MTU를 확인합니다.

ip link show

또는

ip addr

예시

2: eth0:

mtu 1500

모든 인터페이스의 MTU를 비교합니다.

2. 특정 인터페이스 확인하기

ip link show eth0

출력 예시

eth0 mtu 9000

Bonding, VLAN, Bridge 인터페이스도 함께 확인해야 합니다.

3. Ping으로 MTU 테스트하기

Fragment를 허용하지 않고 테스트합니다.

ping -M do -s 1472 192.168.10.100

1472 Byte는 IP Header와 ICMP Header를 제외한 크기입니다.

정상이라면

64 bytes from ...

실패하면

Frag needed

또는

Message too long

이 출력됩니다.

4. Path MTU 확인하기

경로상의 MTU를 확인합니다.

tracepath google.com

예시

pmtu 1500

Path MTU Discovery(PMTUD)가 정상적으로 동작하는지 확인합니다.

5. MTU 변경하기

임시 변경

ip link set dev eth0 mtu 1500

또는

ip link set dev eth0 mtu 9000

변경 후 다시 Ping 테스트를 수행합니다.

6. NIC 정보 확인하기

NIC 상태를 확인합니다.

ethtool eth0

Jumbo Frame을 지원하는지 확인합니다.

지원하지 않는 NIC에서는 MTU 9000을 사용할 수 없습니다.

7. Switch 설정 확인하기

Switch에서도 동일한 MTU를 사용해야 합니다.

확인 항목입니다.

  • Switch MTU
  • Port MTU
  • LACP MTU
  • VLAN MTU

서버만 MTU를 변경해서는 문제가 해결되지 않습니다.

8. Docker 및 Kubernetes 확인하기

Docker

docker network inspect bridge

Kubernetes

kubectl get nodes

Overlay Network(VXLAN)는 일반 Ethernet보다 더 작은 MTU를 사용하는 경우가 많습니다.

9. 로그 확인하기

커널 로그를 확인합니다.

journalctl -k

또는

dmesg | grep -i mtu

MTU 관련 오류가 반복되는지 확인합니다.

10. tcpdump 분석하기

패킷을 확인합니다.

tcpdump -i eth0

Fragment가 과도하게 발생하는지 확인합니다.

또는 Wireshark에서

  • Fragmentation
  • ICMP Fragment Needed

메시지를 확인하는 것도 좋은 방법입니다.

MTU 문제 점검 순서

실무에서는 다음 순서대로 확인하는 것이 좋습니다.

  1. MTU 확인
  2. Ping MTU 테스트
  3. Path MTU 확인
  4. MTU 변경 테스트
  5. NIC 지원 확인
  6. Switch MTU 확인
  7. Docker/Kubernetes 확인
  8. VPN 확인
  9. 로그 확인
  10. tcpdump 분석

MTU 문제 사용 시 주의사항

다음 사항을 확인해야 합니다.

  • 모든 장비의 MTU를 동일하게 설정한다.
  • Jumbo Frame은 모든 구간이 지원해야 한다.
  • VPN 환경에서는 MTU를 낮추는 경우가 많다.
  • Docker Overlay MTU를 확인한다.
  • Kubernetes VXLAN도 함께 확인한다.
  • ICMP를 차단하면 Path MTU Discovery가 정상적으로 동작하지 않을 수 있다.

특히 ICMP “Fragmentation Needed” 메시지를 차단하면 PMTUD가 실패하여 웹 접속이나 파일 전송이 비정상적으로 동작할 수 있습니다.

MTU와 MSS의 차이

항목MTUMSS
의미최대 전송 단위TCP 데이터 최대 크기
적용 계층Layer 2Layer 4
기본값1500 Bytes1460 Bytes
포함 정보IP Header 포함TCP Payload만 포함

MTU는 전체 패킷 크기를 의미하며, MSS는 TCP 데이터 영역만을 의미합니다.

자주 묻는 질문

MTU를 크게 설정하면 항상 성능이 좋아지나요?

아닙니다. 모든 네트워크 장비가 Jumbo Frame을 지원하는 경우에만 효과가 있습니다. 일부 장비만 지원하면 오히려 통신 문제가 발생할 수 있습니다.

Ping은 되는데 웹사이트만 접속되지 않습니다.

MTU 불일치의 대표적인 증상입니다. 작은 패킷은 정상적으로 전달되지만 큰 패킷은 단편화되거나 손실되어 웹 접속이나 HTTPS 통신에 문제가 발생할 수 있습니다.

VPN을 사용하면 MTU를 변경해야 하나요?

많은 VPN 환경에서는 터널링으로 인해 추가 헤더가 붙기 때문에 MTU를 1400~1450 정도로 낮춰 사용하는 경우가 많습니다.

마무리

MTU 불일치는 Linux 서버에서 원인을 찾기 어려운 네트워크 장애 중 하나입니다. ip link, tracepath, ping -M do, ethtool, tcpdump 등을 활용하면 대부분의 MTU 문제를 빠르게 진단할 수 있으며, 서버와 스위치, VPN 장비까지 포함한 전체 경로의 MTU를 일치시키는 것이 가장 중요한 해결 방법입니다.

댓글 남기기