Емулиране на виртуален хост за UDP комуникация

Първо, този въпрос не е за виртуален хост в Apache.

Имам мрежа със следния адрес: 1.1.1.0

Имам няколко хоста в тази мрежа: 1.1.1.1, 1.1.1.2, 1.1.1.3 и 1.1.1.4

Първият хост изпраща излъчен UDP пакетен отговор и очаква друг хост да му отговори.

Възможно ли е моята машина за разработка (1.1.1.4) да емулира следния виртуален хост: 1.1.1.5, 1.1.1.6 и т.н.?

Използвам QUdpSocket от Qt 5.2.1 на MacOS 10.9, но аз отворен съм за всякакви други технологии, които биха ми помогнали да направя този трик.


person Martin Delille    schedule 23.07.2014    source източник


Отговори (2)


Зависи от твоята ОС.

В Linux можете да създадете множество виртуални мрежови устройства и да свържете всяко от тези устройства към различен мрежов адрес. Виртуалните мрежови устройства имат име на реално устройство с цифров суфикс :xxx. Например, ако основното ви мрежово устройство е eth0, можете да изпълните командата

ifconfig eth0:1 1.1.1.5

за да създадете виртуалното устройство eth0:1 и да го свържете към адреса 1.1.1.5. Това е само временно (ще изчезне, когато рестартирате); ако искате да се върне, когато рестартирате, можете да редактирате файла `/etc/network/interfaces така, че да изглежда така:

auto eth0
iface eth0 inet static
    address 1.1.1.4
    netmask 255.255.255.0
    gateway 1.1.1.1

auto eth0:1
    address 1.1.1.5
    netmask 255.255.255.0

липсата на gateway в частта eth0:1 означава, че няма да използва този интерфейс за маршрутизиране, така че той съществува само за получаване на пакети и изрично свързване към ip адрес.

person Chris Dodd    schedule 23.07.2014
comment
Ще опитам с това и ще ви кажа как работи! Мисля да го напиша с ruby! - person Martin Delille; 23.07.2014
comment
Не работи на MacOS, но намерих еквивалента тук: stackoverflow.com/a/624660/118125 - person Martin Delille; 23.07.2014

Инсталирайте VirtualBox (тук) и направете малък дисков образ, достатъчно голям за малка дистрибуция на Linux. Стартирайте няколко копия, всяко на различен IP адрес и стартирайте малък netcat скрипт във всяко от тях, който слуша и изпраща отговори.

#!/bin/bash
while :
do
   command=$(nc -ul 1234)
   process $command and reply
done

Или прочетете това и се придържайте към идеята на Крис, която е с по-малко ресурси!

person Mark Setchell    schedule 23.07.2014