Доброго времени суток!Передо мной стоит задача на локальном ПК организовать информационный обмен между двумя программами, например, iperf -s (сервер) и iperf -с (клиент) таким образом, чтобы трафик шёл не через петлю (loopback), а через виртуальные интерфейсы: tap0 и tap1.
Делается это для того, чтобы можно было эмулировать сетевые задержки и перепутывать пакеты (с помощью netem) и т.д.
Я пробовал создавать сетевой мост между tap0 и tap1 следующим образом:
# создаём виртуальные сетевые интерфейсы
tunctl -u <user> -t tap0
tunctl -u <user> -t tap1
ifconfig tap0 0.0.0.0 promisc up
ifconfig tap1 0.0.0.0 promisc up
# создаём мост
brctl addbr br0
# добавляем в него сетевые интерфейсы
brctl addif br0 tap
brctl addif br0 tap1
# смотрим информацию о мосте
brctl show
# поднимаем мост
ifconfig br0 up
# назначаем IP-адреса
ifconfig tap0 192.168.0.5
ifconfig tap1 192.168.1.5
Для проверки запускаю в одной консоли сервер:
iperf -s -B 192.168.0.5
в другой консоли:
iperf -c 192.168.1.5 -t 1
В результате пакеты из tap1 в tap0 не идут.
Проверял с помощью tcpdump:
tcpdump -i tap0
и
tcpdump -i tap1
Насколько я понимаю, нужно добавить маршрутизацию.
Как это правильно сделать с помощью "route add"?
Добрые люди, помогите пожалуйста разобраться.
Заранее благодарен за ответ!