★ Phase 0 — 재부팅으로 날아간 것 복구 (제일 먼저)

랜카드 교체 = 전원 내림 = iptables FORWARD 정책이 원복됨. 문서 §6에 "재부팅하면 원래대로 돌아감"이라고 적어둔 그 항목이야. 이걸 안 하면 Phase 2에서 전부 connection timed out 나면서 지난번 반나절을 그대로 반복하게 됨.

양쪽 서버 모두:

sudo iptables-nft -L FORWARD -n | head -1     # policy DROP 이면 아래 실행
sudo iptables-nft -P FORWARD ACCEPT
sudo swapoff -a
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

iptables -L(legacy)로는 안 보이니 반드시 iptables-nft로 확인.

죽은 macvlan 네트워크도 지금 정리 (부모 인터페이스가 바뀌었으면 에러의 원인이 됨):

sudo docker network rm dsb-link 2>/dev/null; sudo docker network ls

Phase 1 — 링크 검증 (여기서 통과 못 하면 나머지 무의미)

1-1. 인터페이스 이름 + 드라이버

ip -br link                                    # ens28/ens13 그대로인지, 새 이름 생겼는지
lspci -k | grep -A3 -i ethernet                # Kernel driver in use: atlantic 확인

1-2. ⚠️ 링크 속도 — 여기가 이번 실험의 핵심 전제

ethtool <IF> | grep -E "Speed|Duplex|Link detected"

Speed: 10000Mb/s가 아니면 즉시 멈추고 원인부터 잡아야 함. 10GBASE-T는 케이블 품질에 따라 조용히 5000/2500/1000Mb/s로 협상해버리는데, 이러면 아래 실험을 다 돌리고 나서 "왜 또 포화되지"가 됨. Cat6a 이상인지 확인.

1-3. ⚠️ PCIe 레인 확인 (지난 검토에서 안 짚었던 것)

산 카드가 PCIe 2.1 x4라, 물리적으로는 x4 슬롯인데 전기적으로 x1인 슬롯에 꽂으면 Gen2 x1 = 약 4Gbps로 천장이 생김. ethtool은 10000Mb/s로 보이는데 iperf3만 안 나오는 형태라 원인 찾기가 고약함.

sudo lspci -vv -s $(lspci | grep -i ethernet | grep -i aquantia | cut -d' ' -f1) | grep -E "LnkCap|LnkSta"