Надішліть TCP з неправильними контрольними сумами


2

У мене виникають проблеми з відправленням великих файлів на машину OpenStack.

Наше підключення до Інтернету здійснюється через LTE, тому очікуються погані пакети. Проте навіть надсилання даних за результатами TCP в пошкоджених даних при відправленні декількох МБ.

Я хотів би перевірити, чи дійсно перевіряються контрольні суми TCP, тому мені потрібен інструмент для передачі TCP-пакетів з недійсними контрольними сумами.

Є програми, які дозволяють мені відправляти довільні IP-пакети, але я віддаю перевагу інструменту, який також запускає з'єднання (виконує тристороннє рукостискання і т.д.) для мене.

Я можу потім використовувати tcpdump щоб перевірити, чи сервер ACKs пакетів або запитів повторно. (Якщо інструмент також може зробити це, навіть краще.)

Деякі думки та примітки:

  • Я пробував різні версії Linux як на клієнті, так і на сервері.
  • Ми більше не маємо пошкоджених пакетів при переході на лінію (більш повільну) DSL.
  • Ми не маємо пошкоджених пакетів при відправці на інший сервер з іншого хоста.
  • У мене є tcpdumps передачі TCP від ​​клієнта і сервера, але OpenStack хост не хоче дивитися на них, тому я хотів би дізнатися, якщо контрольні суми є проблемою, а також тест програми для хоста \ t .
  • Сервер є екземпляром у середовищі OpenStack.
  • Останні veth Помилка корупції контрольної суми TCP у ядрі Linux пояснює цю помилку.

Будь-які інші ідеї, як відлагоджувати це, також вітаються.

Відповіді:


1

https://github.com/kubernetes/kubernetes/issues/18898

пояснює, як це зробити.

Тут (скорочена) версія:

На прийомній машині запустити nc -l -p 12345

На машині відправки запустити (i=0; while true; do echo aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa $i; i=$((i+1)); sleep 1; done) | netcat IP_OF_RECEIVING_MACHINE 12345

Щоб пошкодити пакети, виконайте наступну команду на машині відправника:

sudo tc qdisc add dev eth0 root netem corrupt 100%; sleep 10; sudo tc qdisc del dev eth0 root netem

Зверніть увагу, що протягом 10 секунд всі пакунки на eth0 будуть пошкоджені!

Якщо контрольна сума працює правильно, ви не отримаєте жодного тексту протягом 10 секунд, а потім отримаєте їх відразу. Якщо перевірка не працює, ви отримаєте пошкоджений текст.


0
  • Можна використовувати a створення пакетів такий інструмент, як hping, hping3. Перевірте посилання нижче, це дуже корисно;

    hping3 приклади

    З посиланням вище, я думаю, що це те, що ви шукаєте;

    -b - badcksum (спробуємо) відправляти пакети з поганою контрольною комою IP Багато систем виправляють контрольну суму IP, посилаючи пакет, так що ви погано станете   Замість цього використовуються контрольна сума UDP / TCP.

  • Якщо у вас є навички програмування (програмування сокетів, сокети BSD на linux, ви можете їх google), ви можете надсилати фіктивні tcp пакети за допомогою сирі розетки створити свій власний пакет транспортного шару.


Я не зміг зробити hping3 роботу, але це може бути моя вина.
close2

Ви можете детально описати свою проблему?
Levent Divilioglu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.