Добрый день! В статье https://www.opennet.ru/opennews/art.shtml?num=4020 описано использование netgraph для создания виртуального сетевого устройства, которому можно задать свой MAC-адрес.Задача состоит в том, чтобы создать два таких виртуальных устроиства, которые оба были бы подключены к одному физическому сетевому устройству. Возможно ли это с помощью netgraph или как нибудь иначе? Или же придется все -таки покупать swith и пихать в комп вторую сетевуху?
Пытался подключить lower link к physical interface:
# ngctl connect xl1: mybridge2: lower link1
но получил "ngctl: send msg: File exists", видимо потому, что к xl1 уже подключен lower link от mybridge1 (первый virtual interface).Заранее благодарен за любую помощь.
>Задача состоит в том, чтобы создать два таких виртуальных устроиства, которые оба были бы подключены к одному физическому сетевому устройству. Возможно ли это с помощью netgraph или как нибудь иначе?Создаешь сколько тебе нужно ng_eiface, создаешь ng_hub или ng_bridge, к которому подсоединяешь свои ngeth и в него-же втыкаешь lower hook физического интерфейса. Получаешь виртуальную сеть, где ngeth'и воткнуты в физическую сеть через хаб или свич соответственно.
>>Задача состоит в том, чтобы создать два таких виртуальных устроиства, которые оба были бы подключены к одному физическому сетевому устройству. Возможно ли это с помощью netgraph или как нибудь иначе?
>
>Создаешь сколько тебе нужно ng_eiface, создаешь ng_hub или ng_bridge, к которому подсоединяешь
>свои ngeth и в него-же втыкаешь lower hook физического интерфейса. Получаешь
>виртуальную сеть, где ngeth'и воткнуты в физическую сеть через хаб или
>свич соответственно.Спаасибо! Получилось. С хабом. А с ng_bridge не вышло :(
tcpdumpом видно dhcp request на ngeth0 и на ep0, а вот dhcp reply видно только на ep0. То есть до виртуального интерфейса он почему то не доходит...
Все, разобрался. Статью кривовато написали, там в физический интерфейс еще и upper hook вотнут. Вот так работает:ifconfig ep0 ether 00:00:00:00:00:00 up
kldload ng_ether
kldload ng_eiface
kldload ng_bridge
ngctl mkpeer . eiface hook ether
ngctl mkpeer . eiface hook ether
ifconfig ngeth0 up
ifconfig ngeth1 up
ngctl mkpeer ngeth0: bridge lower link0
ngctl name ngeth0:lower mybridge
ngctl connect ep0: mybridge: lower link1
ngctl connect ngeth0: mybridge: upper link2
ngctl connect ngeth1: mybridge: lower link3
ngctl connect ngeth1: mybridge: upper link4
ngctl msg ep0: setautosrc 0
ngctl msg ep0: setpromisc 1
ifconfig ngeth0 ether 00:12:12:12:12:12
ifconfig ngeth1 ether 00:13:13:13:13:13dhclient ngeth0 ngeth1
>Все, разобрался. Статью кривовато написали, там в физический интерфейс еще и
>upper hook вотнут...Нифига. dhcp через ng_bridge все равно не работает. Старый lease в dhclient.leases просто оставался. Только хаб.