Я столкнулся с очень странным поведением с netcat и iptables.
У меня есть две виртуальные машины Linux (клиент и сервер) в разных подсетях:
- IP-адрес клиента: 10.10.30.104
- IP-адрес сервера: 10.10.10.103
Они взаимодействуют через другую виртуальную машину Linux (шлюз).Шлюз имеет две сетевые карты:
- enp0s8: 10.10.10.101
- enp0s9: 10.10.30.101
Для маршрутизации между Клиентом и Сервером яуправлял некоторыми правилами SNAT и DNAT в iptables шлюза.
Все виртуальные машины работают в Ubuntu 16.04 в VirtualBox 5.2.22.
Я использую netcat для прослушивания на стороне сервера следующим образом:
nc -v -l 44 > /dev/null
На клиентеКроме того, я отправляю некоторые фиктивные данные следующим образом:
dd if=/dev/zero bs=1024 count=102400 | nc -v 10.10.30.101 #gateway_ip 44
Первая проблема: передача завершится успешно при первом испытании, однако, если я повторю эту передачу сразу после первого испытания, онавыходит из строя.Итак, я должен подождать пару минут, чтобы пройти еще один успешный маршрут.Почему?
Вторая проблема: у каждого успешного испытания разная скорость.Почему?
iptables шлюза настроен следующим образом: