FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Visionman
рядовой
Сообщения: 27
Зарегистрирован: 2015-10-06 22:28:29

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Visionman » 2017-08-09 13:06:43

Добрый день.

Использую гипервизор bhyve.
Внешние(реальные) адреса изменю для простоты примера.

Хост
ОС FreeBSD 11.1 Release
firewall отключен - трафик ходит свободно.

Есть внешний интерфейс на хосте

Код: Выделить всё

# ifconfig em0
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:50:56:8d:45:c2
        inet 100.50.50.100 netmask 0xffffff00 broadcast 100.50.50.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active

Код: Выделить всё

100.50.50.1 - шлюз
Ещё у хост машины есть два внешних адреса, подсеть другая.

Код: Выделить всё

200.77.77.110 - адрес 1
200.77.77.120 - адрес 2
200.77.77.1 - шлюз
Если добавить alias'ом эти адреса, на сетевую em0, всё работает и адреса отвечают.


Далее...
Готовлю сетевой мост на Хосте для гостевой ОС.
На хосте делаю...

Код: Выделить всё

# ifconfig bridge0 create
# ifconfig tap0 create
# ifconfig brdige0 addm em0 addm tap0 up
Для надёжности

Код: Выделить всё

# ifconfig bridge0 up
# ifconfig tap0 up

Далее...
В гостевой системе требуется чтобы был внешний IP адреса.
Запускаю гостевую, тоже ОС FreeBSD 11.1 Release
Настраиваю уже в гостевой внешние два адреса которые есть(выше написаны)

Код: Выделить всё

# ifconfig vtnet0 200.77.77.110 netmask 255.255.255.0
# route add default 200.77.77.1
# ifconfig vtnet0 up
пробую пинг шлюза

Код: Выделить всё

# ping 200.77.77.1
тишина... :(

пробую пинг

Код: Выделить всё

# ping 8.8.8.8
в итоге тоже тишина :(


Вопрос.
Делаю что-то нетак или у bhyve иначе как-то используются реальные IP в гостевой системе или в настройке сетевого моста ошибаюсь ?
Подскажите пожалуйста.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

pimlab
прапорщик
Сообщения: 483
Зарегистрирован: 2007-10-09 11:31:03

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение pimlab » 2017-08-10 8:39:41

em0 promiscuous mode enabled ??

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Demis » 2017-08-10 18:06:42

А gateway_enable="YES" (в /etc/rc.conf) на хостмашине установлен?

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Neus » 2017-08-10 20:11:52

Demis писал(а):А gateway_enable="YES" (в /etc/rc.conf) на хостмашине установлен?
Нафига? У него же бридж.
Physics is mathematics with the constraint of reality.
Engineering is physics with the constraint of money.

LOR захватили ситхи.
Добро пожаловать на светлую сторону!

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Demis » 2017-08-10 21:31:43

Так если сетки разные, то нужен роутинг, для оного нужен
Demis писал(а): gateway_enable="YES"
Отправлено спустя 39 минут 39 секунд:
По простому, он (gateway_enable) включает нам sysctl -w net.inet.ip.forwarding=1
Хотя, думаю он у него включен, просто не написано об этом.
И если включен, то нужно ковырять уже сами настройки всей этой кухни (bridge0, tap0, em0 и кстати другой интерфейс у ТС тоже присутствует, косвенно об этом говорит фраза "Есть внешний интерфейс...". Раз есть внешний, значит есть и внутренний). И тогда читать man ifconfig до просветления, либо использовать нечто вроде vm-bhyve (и им подобным) из портов... Когда тестил у себя столкнулся с тем, что вроде все правильно, но не работает, двадцать раз перепроверил - ноль на массу. Перегрузил машину, а оно возьми и заработай... Такие моменты тоже нужно учитывать.

Visionman
рядовой
Сообщения: 27
Зарегистрирован: 2015-10-06 22:28:29

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Visionman » 2017-08-10 22:47:22

Да, на хост машине.

Код: Выделить всё

gateway_enable="YES"
Другого то интерфейса смотрящего в "мир" нету, только em0 смотрит в мир.

Тут конечно одно понятно.
делая шлюз у гостевой 200.77.77.1 (тот что дан для двух отдельных адресов)
гостевая до него достучаться не может...

Сделать шлюзом хоста, на гостевой - не получится

Код: Выделить всё

# route add default  100.50.50.100
route: writing to routing socket: Network is unreachable
add net default: gateway 100.50.50.100 fib 0: Network is unreachable
у гостевой конечно нету интерфейса который смотрит в подсеть хоста
Demis писал(а): ......Когда тестил у себя столкнулся с тем, что вроде все правильно, но не работает, двадцать раз перепроверил - ноль на массу. Перегрузил машину, а оно возьми и заработай... Такие моменты тоже нужно учитывать.
Вот тут очень правильно, в том то и дело, настроено верно, всё проверяешь, должно же работать и нет.
И как в итоге решился вопрос с реальными IP в гостевой системе ?


Пробовал даже такую схему, это уж ради эксперимента, накручено ясное дело, но суть думаю понятна.
Какие только вариации уже в голову не приходят )))
tap1 (хост) <---> tap2(гость) - связь между хостом и гостем без моста работает - прямая связь считайте, как VPN точка-точка, маска 252-ая(/30)

Схема ниже

Код: Выделить всё

            HOST 
 |                                                                GUEST
bridge0 (в мосте em0 и tap1)
em0[100.50.50.100]
tap1[192.168.100.1/30]<--------------------> vtnet0(tap2 на хосте) - 192.168.100.2/30
tap2 - IP не присвоен                        vtnet1(tap3 на хосте) - 200.77.77.110/24
tap3 - IP не присвоен                        --------------------------------------------
                                             Все команды ниже на гостевой ОС
                                             --------------------------------------------
                                             Пробую так
                                             # route add default 192.168.100.1 - добавляется без ошибок
                                             # ping 100.50.50.100 - есть ответы
                                             # ping 200.77.77.1 - до шлюза выделенных IP - ответов нету
                                             # ping 8.8.8.8 - в мир - ответов нету...
                                             
                                             Опять же из разряда экспериментов...
                                             # route add -net 200.77.77.0/24 192.168.100.1
                                             # route change default 200.77.77.1
                                             # ping 200.77.77.1 - до шлюза выделенных IP - ответов нету
                                             # ping 8.8.8.8 - в мир - ответов нету...

guest
проходил мимо

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение guest » 2017-08-10 23:33:38

Visionman писал(а):Да, на хост машине.

Код: Выделить всё

gateway_enable="YES"
Другого то интерфейса смотрящего в "мир" нету, только em0 смотрит в мир.

Тут конечно одно понятно.
делая шлюз у гостевой 200.77.77.1 (тот что дан для двух отдельных адресов)
гостевая до него достучаться не может...

Сделать шлюзом хоста, на гостевой - не получится

Код: Выделить всё

# route add default  100.50.50.100
route: writing to routing socket: Network is unreachable
add net default: gateway 100.50.50.100 fib 0: Network is unreachable
у гостевой конечно нету интерфейса который смотрит в подсеть хоста
Demis писал(а): ......Когда тестил у себя столкнулся с тем, что вроде все правильно, но не работает, двадцать раз перепроверил - ноль на массу. Перегрузил машину, а оно возьми и заработай... Такие моменты тоже нужно учитывать.
Вот тут очень правильно, в том то и дело, настроено верно, всё проверяешь, должно же работать и нет.
И как в итоге решился вопрос с реальными IP в гостевой системе ?


Пробовал даже такую схему, это уж ради эксперимента, накручено ясное дело, но суть думаю понятна.
Какие только вариации уже в голову не приходят )))
tap1 (хост) <---> tap2(гость) - связь между хостом и гостем без моста работает - прямая связь считайте, как VPN точка-точка, маска 252-ая(/30)

Схема ниже

Код: Выделить всё

            HOST 
 |                                                                GUEST
bridge0 (в мосте em0 и tap1)
em0[100.50.50.100]
tap1[192.168.100.1/30]<--------------------> vtnet0(tap2 на хосте) - 192.168.100.2/30
tap2 - IP не присвоен                        vtnet1(tap3 на хосте) - 200.77.77.110/24
tap3 - IP не присвоен                        --------------------------------------------
                                             Все команды ниже на гостевой ОС
                                             --------------------------------------------
                                             Пробую так
                                             # route add default 192.168.100.1 - добавляется без ошибок
                                             # ping 100.50.50.100 - есть ответы
                                             # ping 200.77.77.1 - до шлюза выделенных IP - ответов нету
                                             # ping 8.8.8.8 - в мир - ответов нету...
                                             
                                             Опять же из разряда экспериментов...
                                             # route add -net 200.77.77.0/24 192.168.100.1
                                             # route change default 200.77.77.1
                                             # ping 200.77.77.1 - до шлюза выделенных IP - ответов нету
                                             # ping 8.8.8.8 - в мир - ответов нету...
вместо того чтобы:
- выяснить какое коннективити наружу:
свитч - порт - наличие vlan
# netstat -rn
верхнее em0 + aliases без bhyve

даже картинку нарисовать, после чего все станет прозрачно и понятно как и куда
уходят пакеты...
Тогда с мостом и tap и bhyve/vnet проблем не будет.

Visionman
рядовой
Сообщения: 27
Зарегистрирован: 2015-10-06 22:28:29

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Visionman » 2017-08-11 10:38:54

undefined писал(а): вместо того чтобы:
- выяснить какое коннективити наружу:
свитч - порт - наличие vlan
основной адреса -
undefined писал(а): 00.77.77.
100.50.50.100
и два дополнительных адреса
200.77.77.110 - адрес 1
200.77.77.120 - адрес 2

В дата-центрах и в данном случае так, ответ техподдежки.
На все без исключения выделенные серверы подаётся канал в отдельном VLAN'е,
далее снимается тег VLAN'а и на порт сервера естественно всё приходит уже в "прямом"(разтегированном) виде, если так можно выразиться.

Подать кстати VLAN напрямую на порт сервера, как оказалось это проблема у некоторых хостеров.
Был бы VLAN(тегированный трафик) на порту сервера, тогда вообще всё без проблем с гостевой системой.

# netstat -rn
верхнее em0 + aliases без bhyve

Код: Выделить всё

# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags     Netif Expire
default            100.50.50.1        UGS         em0
127.0.0.1          link#3             UH          lo0
200.77.77.0/24     link#1             U           em0
200.77.77.110      link#1             UHS         lo0
200.77.77.120      link#1             UHS         lo0
100.50.50.0/24     link#1             U           em0
100.50.50.100      link#1             UHS         lo0

Алиасы на интерфейсе em0

Код: Выделить всё

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:23:21:3c:33:b2
        inet 100.50.50.100 netmask 0xffffff00 broadcast 100.50.50.255
        inet 200.77.77.110 netmask 0xffffff00 broadcast 200.77.77.255
        inet 200.77.77.120 netmask 0xffffff00 broadcast 200.77.77.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Demis » 2017-08-11 12:54:51

Ключик установлен? ee /etc/sysctl.conf

Код: Выделить всё

# rv
# https://www.freebsd.org/doc/handbook/virtualization-host-bhyve.html
net.link.tap.up_on_open=1

Visionman
рядовой
Сообщения: 27
Зарегистрирован: 2015-10-06 22:28:29

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Visionman » 2017-08-11 13:17:58

Это да, сразу ставлю, как хост настраиваю

Код: Выделить всё

# sysctl -a | grep net.link.tap
net.link.tap.debug: 0
net.link.tap.devfs_cloning: 1
net.link.tap.up_on_open: 1   <<<<<-------
net.link.tap.user_open: 0
Отправлено спустя 10 минут 8 секунд:
Если на хосте, добавляя алиасами два выделенных адреса
200.77.77.110 - адрес 1
200.77.77.120 - адрес 2

и пинги на два выделенных адреса идут через шлюз хоста, который поумолчанию 100.50.50.1

Код: Выделить всё

интернет <------------> шлюз хостера 100.50.50.1 <--------------> мой выделенный сервер в стойке с адресом 100.50.50.100
                        здесь же смаршрутизирована                alias_1 на em0 200.77.77.110
                        подсеть 200.77.77.0/24                    alias_2 на em0 200.77.77.120
                        выданы мне два адреса                        
                        200.77.77.110 - адрес 1
                        200.77.77.120 - адрес 2
схема выходит такая, верно я понимаю или упускаю что-то ?

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Demis » 2017-08-11 15:15:10

Стойте, стойте, стойте...
Чего-то я не догоняю...
У Вас-же
Visionman писал(а): inet 200.77.77.110 netmask 0xffffff00 broadcast 200.77.77.255
inet 200.77.77.120 netmask 0xffffff00 broadcast 200.77.77.255
т.е. эти адреса 200.77.77.110, 200.77.77.120 уже на интефейс хоста назначены. Если они уже назначены, то во-внутрь VM они не попадут.

Отправлено спустя 52 минуты 12 секунд:
А не пробовали vm и их сетку развернуть с помощью утилит? Например /usr/ports/sysutils/vm-bhyve https://github.com/churchers/vm-bhyve. Она конечно не идеальная и имеет свои тараканы, но все-таки облегчает построение. Тут народ думаю и другие порты подскажет. Лично у меня по классическому мануалу построения VM и сети к ней получилось всего один раз (и работало до перезагрузки), причем когда стал повторять, вообще никак не завелось, т.е. как оное заработало в первый раз - так и не осознал. Тогда и был нарыт порт который помог упростить эту задачку. Могу конечно выложить описалово как именно это было сделано, но это будет не мерянный, да и не законченный текст. К тому-же он во многом повторяет, что уже опубликовано на лиссяре и о чем упоминал guest.

Visionman
рядовой
Сообщения: 27
Зарегистрирован: 2015-10-06 22:28:29

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Visionman » 2017-08-11 16:02:19

Demis писал(а): т.е. эти адреса 200.77.77.110, 200.77.77.120 уже на интефейс хоста назначены. Если они уже назначены, то во-внутрь VM они не попадут.
не-не... они конечно же не назначены алиасами на интерфейсе, когда в виртуальной пробую, это я упомянул, чтобы была ясность у читающих, что адреса точно работают и смаршрутизированы на шлюзе хоста и работают, хоть и из другой подсети выданы.
Demis писал(а): А не пробовали vm и их сетку развернуть с помощью утилит? Например /usr/ports/sysutils/vm-bhyve https://github.com/churchers/vm-bhyve. ...........
Да, думаю вариант попробовать утилиту vm-bhyve остаётся, чтобы уж точно быть увереным...

Так, как мысли в слух...
Может мне поддержка что-то не договаривает и у них там фильтрация стоит, кто пакеты отправил, с какого адреса IP, какой мак карты и т.п.
Но открыто не говорят мне просто этого... что думаете ?

Ведь по сути то очевидно, что настройка нормальная, вместо "белых" IP локальные ставлю, на раз всё начинает работать, даже когда подсети разные задаю 192.168.0.0/24( 192.168.0.100 ставим вместо 100.50.50.100) и 10.0.0.0/24 (вместо вдух выданных адресов 10.0.0.110 и 10.0.0.120 )

Отправлено спустя 44 секунды:
В любом случае, спасибо всем кто отвечает и подаёт идеи решения задачи! ))

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Demis » 2017-08-11 17:41:57

Пока рано валить на тех поддержку.
Опус про VM. Написан собственноручно (хотя и копи-пасты есть) и для себя, т.е. для собственного применения, только IP поменял.
Про подъем сети на бриджах где-то в середине.
Лишнее выкидывать не стал. Выходные длинные, будет скучно, можно почитать...
Только сам не запутайся.

Код: Выделить всё

Мне, как тому китайцу, вечно не хватает мозгов.

И чтобы в четыредесятый раз судорожно не ловить покемонов в манах я сразу добавил макрос:
ee /root/.cshrc
alias bh        echo "bhyve - hypervisor of FreeBSD, vm - manager from ports /usr/ports/sysutils/vm-bhyve"

Но, это лично для меня, т.к. я вечно ошибаюсь в написании этой команды (bhyve), 
особенно по утру в понедельник, достало...

Основная стартовая инструкция для нас:
https://www.freebsd.org/doc/handbook/virtualization-host-bhyve.html
http://www.gsp.com/cgi-bin/man.cgi?section=8&topic=vm

Правда, все не так просто, когда хочется сразу делать под себя.
И лично меня она запутала окончательно, при попытке добится своей, конкретной, конфигурации. 
Либо получить простую, управляемую, повторяемость.
Когда начинаешь с ноля новую область познаний и так не легко, т.к. нет понимания "что да как".

В BIOS основной железки находим, проверяем, включаем VT-d и Virt I/O или что у нас там еще есть.

Ставим стандарным образом систему на будущую хост-машину.
Проверим, что есть на ней Интернет, т.е. имена резолвятся, файлы скачиваются.
Например так:
fetch https://svnweb.freebsd.org/base/release/10.3.0/README

fetch: https://svnweb.freebsd.org/base/release/10.3.0/README: size of remote file is not known
README                                                  24 kB   37 MBps 00m00s
Ок. Работает.

Вообще: 
192.168.1 - просто внутренняя сетка
192.168.1.1 - главнюк, смотрит в Интернет, никаких бриджей нет.
192.168.1.207 - машинка несет на себе bhyve
192.168.2 - сетка от всех VM машин которые крутятся внутри bhyve (клиенты)
192.168.3 - сетка от всех машин НА которых крутятся хосты bhyve с бриджами (сервера)

главнюк
ifconfig
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 9000
        description: LAN1 loc
        options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
        ether 00:25:90:3a:6a:90
        inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
        inet 192.168.6.1 netmask 0xffffff00 broadcast 192.168.6.255
        inet 192.168.4.1 netmask 0xffffff00 broadcast 192.168.3.255
        inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
        inet 192.168.3.1 netmask 0xffffff00 broadcast 192.168.3.255
        nd6 options=49<PERFORMNUD,IFDISABLED,NO_RADR>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
em1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        description: WAN1 Internet
        options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
        ether 00:06:29:99:7f:8b
        inet 10.10.10.10 netmask 0xfffffff0 broadcast 10.10.10.10.79
        nd6 options=49<PERFORMNUD,IFDISABLED,NO_RADR>
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
em2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        description: LAN2 loc
        options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
        ether 00:25:90:3a:6a:92
        inet 192.168.222.2 netmask 0xffffff00 broadcast 192.168.222.255
        nd6 options=49<PERFORMNUD,IFDISABLED,NO_RADR>
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
em3: flags=8c02<BROADCAST,OACTIVE,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=4219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC,VLAN_HWTSO>
        ether 00:25:90:3a:6a:93
        nd6 options=49<PERFORMNUD,IFDISABLED,NO_RADR>
        media: Ethernet autoselect
        status: no carrier
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
        nd6 options=49<PERFORMNUD,IFDISABLED,NO_RADR>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
        tunnel inet 10.10.10.10 --> 100.100.100.101
        inet 192.168.1.1 --> 192.168.231.1 netmask 0xffffff00
        nd6 options=9<PERFORMNUD,IFDISABLED>
        options=1<ACCEPT_REV_ETHIP_VER>


хост bhyve
ifconfig
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=42098<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,VLAN_HWTSO>
        ether 18:03:73:c6:f5:f6
        inet 192.168.1.207 netmask 0xffffff00 broadcast 192.168.1.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (100baseTX <half-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
        groups: lo
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 02:de:c8:e6:e7:00
        inet 192.168.2.2 netmask 0xffffff00 broadcast 192.168.2.255
        nd6 options=9<PERFORMNUD,IFDISABLED>
        groups: bridge
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 4 priority 128 path cost 2000000
        member: em0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 1 priority 128 path cost 2000000
tap0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        description: vmnet-vm1-0-public
        options=80000<LINKSTATE>
        ether 00:bd:55:e5:f6:00
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect
        status: active
        groups: tap
        Opened by PID 1158
bridge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        description: vm-public
        ether 02:de:c8:e6:e7:01
        nd6 options=1<PERFORMNUD>
        groups: bridge
        id 00:00:00:00:00:00 priority 0 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0

клиент bhyve
ifconfig
vtnet0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80028<VLAN_MTU,JUMBO_MTU,LINKSTATE>
        ether 58:9c:fc:02:7c:42
        inet 192.168.2.10 netmask 0xffffff00 broadcast 192.168.2.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet 10Gbase-T <full-duplex>
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
        groups: lo


После установки пропишем, проверим, поправим:
ee /etc/rc.conf
hostname="bhv-srv1"
ifconfig_em0="inet 192.168.1.207 netmask 255.255.255.0"
defaultrouter="192.168.1.1"

sshd_enable="YES"
ntpd_enable="YES"

# rv
# 2017-07-12 17:17
# https://www.freebsd.org/doc/handbook/virtualization-host-bhyve.html
cloned_interfaces="bridge0 tap0"
ifconfig_bridge0="addm em0 addm tap0"
gateway_enable="YES"

vm_enable="YES"
vm_dir="/usr/vm"
#vm_list="vm1 vm2 vm3"
vm_list="vm1"
vm_delay="35" # in seconds between, default 5
# bhyve
# bhyvectl
# bhyveload
# /usr/home/user/usr/src/share/examples/bhyve/vmrun.sh
# /usr/ports/sysutils/vm-bhyve
#

ee /etc/sysctl.conf
# rv
# 2017-07-12 17:17
# https://www.freebsd.org/doc/handbook/virtualization-host-bhyve.html
net.link.tap.up_on_open=1

ee /boot/loader.conf
# rv
# 2017-07-12 17:17
# https://www.freebsd.org/doc/handbook/virtualization-host-bhyve.html
vmm_load="YES"
nmdm_load="YES"
if_bridge_load="YES"
if_tap_load="YES"

ee /etc/resolv.conf
search simple.loc
nameserver 192.168.1.1

Загрузим модуль vmm
kldload vmm

ifconfig tap0 create
sysctl net.link.tap.up_on_open=1

ifconfig bridge0 create
ifconfig bridge0 addm em0 addm tap0

Выругался:
ifconfig: BRDGADD tap0: File exists
но em0 добавил!!!
Мораль ставь em0 (т.е. физический интерфейс) всегда первым!

ifconfig bridge0 up

Сам bhyve по штатной https://www.freebsd.org/doc/handbook/virtualization-host-bhyve.html конечно можно быстро запустить.
Только потом с этим неудобно работать. В том смысле, что лично в моей голове "кеш" маленький,
а нужно слишко много помнить "о чем некий параметр" иначе дело швах.

В итоге вроде подобрал для себя вариант как упростить эту задачу.
И весьма не дурно в этом помогает /usr/ports/sysutils/vm-bhyve.
Вообще, "штатная" алгоритмика и "vm-bhyve" кардинально отличается (в моей голове) и, лично меня как пользователя,
это сильно сбило с толку. 
Хотя я понимаю, что на самом деле vm-bhyve работает по штатному принципу. Нашел это в скриптах и логах.

Впоследствии этот момент можно будет подглядеть в логе созданной VM.
ee /usr/vm/vm1/vm-bhyve.log
Jul 13 10:33:01: booting
Jul 13 10:33:01: bhyveload -c /dev/nmdm0A -m 256M -e autoboot_delay=3 -d /usr/vm/.iso/FreeBSD-11.0-RELEASE-amd64-disc1.iso vm1
Jul 13 10:33:04:  [bhyve options: -c 1 -m 256M -AHP -U 1d8d3f24-679d-11e7-8be1-180373c6f5f6]
Jul 13 10:33:04:  [bhyve devices: -s 0,hostbridge -s 31,lpc -s 4:0,virtio-blk,/usr/vm/vm1/disk0.img -s 5:0,virtio-net,tap1,mac=58:9c:fc:02:7c:42]
Jul 13 10:33:04:  [bhyve console: -l com1,/dev/nmdm0A]
Jul 13 10:33:04:  [bhyve iso device: -s 3:0,ahci-cd,/usr/vm/.iso/FreeBSD-11.0-RELEASE-amd64-disc1.iso]
Jul 13 10:33:04: starting bhyve

Но о создании VM ниже.

Итак, установим порт для упрощения обслуживания VM
cd /usr/ports/sysutils/vm-bhyve
make install
(check Internet on host, ipfw on gateway too)

Кажется эту строчку нужно править внутри самой vm. Проверить(!)
ee /etc/ttys
ttyu0   "/usr/libexec/getty 3wire"   xterm  on secure
Хотя на страничке https://www.freebsd.org/doc/handbook/virtualization-host-bhyve.html
написано "Note: Beginning with FreeBSD 9.3-RELEASE and 10.1-RELEASE the console is configured automatically."
Т.е. мол, начиная с 9.3 и 10.1 этот момент конфигурируется автоматически.
И таки, да. Это точно внутри VM.

rehash

Определим/создадим путь где будут лежать все VM
mkdir -p /usr/vm

Проинициализируем, т.к. в rc.conf мы уже прописались, то можно из любого каталога сделать:
vm init

Вообще в мане рекомендуется делать это каждый раз после каких-либо телодвижений, т.е. написано:
     init
             This should be run once after each host reboot before running any
             other vm commands. The main function of the init command is as
             follows:

             o Load all necessary kernel modules if not already loaded
             o Set tap devices to come up automatically when opened
             o Create any configured virtual switches


После инита создаются каталоги:
/usr/vm/.config
/usr/vm/.iso
/usr/vm/.templates

Последний почему-то пустой.
Сразу исправим этот момент:
ls /usr/ports/sysutils/vm-bhyve/work/stage/usr/local/share/examples/vm-bhyve/
cp /usr/ports/sysutils/vm-bhyve/work/stage/usr/local/share/examples/vm-bhyve/* /usr/vm/.templates

Скачаем нужный дистрибутив на хост-машину:
cd /usr/vm/.iso
fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/11.0/FreeBSD-11.0-RELEASE-amd64-disc1.iso
fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/11.0/CHECKSUM.SHA256-FreeBSD-11.0-RELEASE-amd64
fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/11.0/CHECKSUM.SHA512-FreeBSD-11.0-RELEASE-amd64

По ману можно из любого каталога выполнить закачку еще и так:
vm iso ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/10.1/FreeBSD-10.1-RELEASE-amd64-disc1.iso
все будет уложено именно в /usr/vm/.iso , т.е. как прописано в ee /etc/rc.conf
Красиво и логично.

Теперь сети.
Для меня это оказалось очень проблемным, въехать, как это настраивать.
Особенно как перестраивать и добиваться правильной работы.

Смотрим:
vm switch list
NAME            TYPE       IDENT       VLAN      NAT          PORTS
т.е. чисто, интерфейсов нет, сетей нет, населена роботами...

vm switch create public
vm switch add public em0
/usr/local/sbin/vm: ERROR: failed to add member to the virtual switch

##########################################################################
https://www.freebsd.org/doc/handbook/network-bridging.html
# ifconfig bridge create
# ifconfig bridge0 addm fxp0 addm fxp1 up
# ifconfig fxp0 up
# ifconfig fxp1 up
##########################################################################
(https://github.com/churchers/vm-bhyve)
(If you just want to bridge guests to your physical network, add the appropriate real interface to the switch. 
Obviously you will need to replace em0 here with the correct interface name on your system: 
# vm switch add public em0)
##########################################################################
https://github.com/churchers/vm-bhyve/issues/146
Generally you want to put the host ip on the bridge. So says FreeBSD handbook too:

    If the bridge host needs an IP address, set it on the bridge interface, not on the member interfaces.
    https://www.freebsd.org/doc/handbook/network-bridging.html

I recommend setting up the bridge manually, and telling vm-bhyve to simply use it (bridge import).

Here is an example rc.conf snippet, based on what I use (mac is set specifically on bridge to avoid it changing when I reboot)":

cloned_interfaces="bridge0 tap0"
# add a dummy tap just to keep this from happening
# https://github.com/churchers/vm-bhyve/issues/105
ifconfig_bridge0="ether 96:3d:4b:f1:79:7a addm igb0 addm tap0 up"
ifconfig_bridge0_alias0="inet 192.168.1.1/24"
ifconfig_igb0="up"
ifconfig_tap0="description 'dummy-tap' up"

Then in vm/.config/system.conf, after a vm switch import public bridge0:

switch_list="public"
bridge_public="bridge0"

$ vm switch list
NAME            TYPE       IDENT       VLAN      NAT          PORTS
public          manual     bridge0     n/a       n/a          n/a
##########################################################################
Основной скрипт:
ee /usr/local/sbin/vm
По свичу:
ee /usr/local/lib/vm-bhyve/vm-switch
И вообще, в портах уже
https://svnweb.freebsd.org/ports/head/sysutils/vm-bhyve/
версия - 1.1.8
fetch https://svnweb.freebsd.org/base/release/10.3.0/README
fetch https://svnweb.freebsd.org/ports/head/sysutils/vm-bhyve/Makefile\?view=co
fetch https://svnweb.freebsd.org/ports/head/sysutils/vm-bhyve/distinfo\?view=co
fetch https://svnweb.freebsd.org/ports/head/sysutils/vm-bhyve/pkg-descr\?view=co
fetch https://svnweb.freebsd.org/ports/head/sysutils/vm-bhyve/pkg-message\?view=co
fetch https://svnweb.freebsd.org/ports/head/sysutils/vm-bhyve/pkg-plist\?view=co
ln -s /usr/local/share/certs/ca-root-nss.crt /etc/ssl/cert.pem
##########################################################################
!!! ЧИТАТЬ ВНИМАТЕЛЬНО !!!
https://github.com/churchers/vm-bhyve/wiki/Virtual-Switches
ee /usr/local/lib/vm-bhyve/vm-switch
##########################################################################
Форум от автора скрипта:
https://forums.freebsd.org/threads/52014/
Интересная вешь у него написана:
Вопрос: Ok I just gave it the command, and now the error is gone and the other dirs are created.
One more question, do I need the cloned_interfaces="brigde0 tap0" lines in /etc/rc.conf?
Or is the vm switch create public command taking care of that?
Thanks for your time. 
---
Ответ: You don't need to create any bridges or other interfaces manually.
The switch commands create bridge interfaces (and this is done automatically by vm-bhyve on boot). Tap devices are created dynamically when you start a virtual machine 
---
Windows is supported in bhyve, but it's a bit hacky. As there's no graphical output you need to create an unattended installation ISO for Windows, then let that run and install Windows blind*. Once installed, the Windows serial console provides enough functionality to find out the guests IP address, at which point you can RDP directly to the guest. (The bhyve Windows instructions provide information to create a Windows install that has RDP enabled by default and gets an IP address via DHCP).
*I say blind but you can actually see a lot of what is happening during install via the Windows serial console. 
##########################################################################
https://github.com/churchers/vm-bhyve/issues/105
Please find two strings 'ifconfig "${_id}" description "vm-${_switch}" up' in the /usr/local/lib/vm-bhyve/vm-switch and put
ifconfig "${_id}" priority 0
before.
Но это другое, интересен кусок:
ee /usr/local/lib/vm-bhyve/vm-switch

__switch_add_member(){
    local _switch="$1"
    local _member="$2"
    local _id

    [ -z "${_switch}" -o -z "${_member}" ] && __usage

    __switch_auto "${_switch}"
    __switch_get_ident "_id" "${_switch}"
    [ -z "${_id}" ] && __err "unable to locate virtual switch ${_id}"

    __switch_configure_port "${_switch}" "${_id}" "${_member}"
    __rc_append_string ".config/switch" "ports_${_switch}" "${_member}"
}
##########################################################################
https://github.com/churchers/vm-bhyve/issues/25
Add support for manually configured bridges to vm switch

Just to add, if you are currently using your configuration from above, I would empty out the $vm_dir/.config/switch file if you haven't already.

On reboot the host will run vm init, which will create bridge interfaces for any switches listed in the configuration, which in you case will end up with 2 bridges for each switch, as you're creating them manually in /etc/rc.conf.

With the switch configuration file empty, vm-bhyve will not attempt to create any bridges automatically, but it should still happily find your manual bridges when starting guests.
=============
I've added support for this and a new command to 'import' existing bridge interfaces. Assuming you have cleared out any existing virtual switches, you should be able to run the following:

vm switch import lan bridge0
vm switch import wan bridge1

This will add the bridges to vm-bhyve configuration, and will assign the relevant description so we can find them when starting guests. It also causes the description to be added on boot, so users don't need to manually assign the vm-bhyve label to the bridge.

These show up in vm switch list as "manual" switches. The idea being that this is for instances when you want to manage your own bridge. As such, we error out if you try and run one of the add, remove, vlan or nat functions on it.

If the destroy command is used, it remove the interface description and vm-bhyve configuration, but leaves the bridge intact.

##########################################################################

Смотрим снова:
vm switch list
NAME            TYPE       IDENT       VLAN      NAT          PORTS
public          auto       bridge1     -         -            -

т.е. все-таки бридж добавился И очень хорошо, что тип "auto".
Manual имеет существенные ограничения, читаем ман.

ifconfig
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=42098<VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,VLAN_HWTSO>
        ether 18:03:73:c6:f5:f6
        inet 192.168.1.207 netmask 0xffffff00 broadcast 192.168.1.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (100baseTX <half-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
        groups: lo
tap0: flags=8902<BROADCAST,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80000<LINKSTATE>
        ether 00:bd:51:de:ff:00
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect
        status: no carrier
        groups: tap
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 02:de:c8:e6:e7:00
        nd6 options=9<PERFORMNUD,IFDISABLED>
        groups: bridge
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 3 priority 128 path cost 2000000
        member: em0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 1 priority 128 path cost 200000
bridge1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        description: vm-public
        ether 02:de:c8:e6:e7:01
        nd6 options=1<PERFORMNUD>
        groups: bridge
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0

Вроде "не то" с сеткой, потом до-разобраться.

Для создания файла машины есть команда:
vm create [-t template] [-s size] name
Выше мы копировали темплейты, они лежат в /usr/vm/.templates
Не трудно догадаться, что дефолтный - default.conf
Можно скопировать, подправить и использовать его.

Создаем дефолтную VM машинку (256Мб RAM):
vm create -s 16G vm1

---После создания VM 

О темплайтах нужно расписать отдельно.

Бриджи, будь они не ладны.
С первого захода не получилось по ману.

На заметку почитать скрипт:
/usr/share/examples/netgraph/ether.bridge

Но что замечено, если совсем швах, то содержимое двух файлов дает многое для понимания, просветления.
Речь о ee /usr/vm/.config/switch
switch_list="public"
ports_public="em0"

В нем отсутствовала строка: ports_public="em0"
А без нее vm switch list
NAME            TYPE       IDENT       VLAN      NAT          PORTS
public          auto       bridge1     -         -            em0

ЕСЛИ НЕ РИСУЕТ em0 в графе PORTS.
Без этого сеть не работает.
Нужно проверить м.б. он появляется после перезагрузки?

и cat /usr/vm/vm1/vm1.conf
guest="freebsd"
loader="bhyveload"
cpu=1
memory=256M
network0_type="virtio-net"
network0_switch="public"
network0_device="tap0"
disk0_type="virtio-blk"
disk0_name="disk0.img"
uuid="1d8d3f24-679d-11e7-8be1-180373c6f5f6"
network0_mac="58:9c:fc:02:7c:42"

Но он (этот файлик) появится позже (? точно ? Да, точно!) после создания VM.

Еще, тоже интересный, файлик:
cat /usr/vm/vm1/console
com1=/dev/nmdm0B


Укажем какой дистрибутив подключен для инсталляции:
vm install vm1 FreeBSD-11.0-RELEASE-amd64-disc1.iso
ничего не выводит, тишина, подождать (время на загрузку с образа диска), делаем снова:
vm console vm1

Рисует "Connected" и тишина, жмыкаем h 
(на самом деле любую клавишу, можно ентер).
(This uses cu() so press ~+Ctrl-D to exit)
(or ~. to exit)

О! Вводим
login: root
# bsdinstall

Выбор делаем на отдельном стрелочном кейпаде и табом.
И очень аккуратно, терминальные клавиши по дефолту очень не удобно работают.
Точнее совсем неудобно работают...
На выборе языка ловим:
         ---------------------------Error-----------------------------¬
         ¦ kbdcontrol: setting keymap: Inappropriate ioctl for device ¦
         +------------------------------------------------------------+
         ¦                         <  OK  >                           ¦
         L-------------------------------------------------------------

Inappropriate ioctl for device

reboot (хост-машины)
Вообще все плохо.
Коннект к vm потерян, напрочь.

В BIOS поменял порт COM1 на COM2.
Ни фига.

Тут осенила мысль:
Похоже она (новая VM) начала грузиться из файла но, т.к. установка не прошла - грузиться особо нечему - висим...
Тогда делаем так:
vm stop vm1
vm install vm1 FreeBSD-11.0-RELEASE-amd64-disc1.iso
vm console vm1
h
login: root
# bsdinstall

На этот раз все пошло нормально.
Устанавливаемся как обычно.
vm1.bhyve.loc
192.168.2.10
в конце
reboot

vm console vm1

Получили доступ к загрузившейся VM.

На главном роутере добавить новые сетки ee /etc/rc.conf:
-route add -net 192.168.2.10/32 192.168.1.1
-и в ee /etc/rc.conf
-route_bhyve1="-net 192.168.2.10/32 192.168.1.1"
-static_routes="bhyve1"
для серверов с VM
ifconfig_em0_alias2="inet 192.168.3.1 netmask 255.255.255.0"
для самих VM
ifconfig_em0_alias2="inet 192.168.2.1 netmask 255.255.255.0"

Добавим их на лету
ifconfig em0 inet alias 192.168.2.1
ifconfig em0 inet alias 192.168.3.1

Поменяем правила в IPFW.
Во-первых изменяется диверт
С divert 8668 ip from 192.168.1.0/24 to any out via em1
на divert 8668 ip from 192.168.1.0/24,192.168.2.0/24,192.168.3.0/24 to any out via em1
Исходящий остается прежним
divert 8668 ip from any to 10.10.10.10 in via em1

Для того чтобы это сделать на лету был применен небольшой трюк:
ipfw -d show | grep div
10550   355185    20742916 divert 8668 ip from 192.168.1.0/24 to any out via em1
10600 38800509 41611682501 divert 8668 ip from any to 10.10.10.10 in via em1

ipfw -q -N add 10552 divert natd all from 192.168.1.0/24,192.168.2.0/24,192.168.3.0/24 to any out via em1
ipfw delete 10550

Надо натинг только для конкретных ИП:
ipfw -q -N add 10554 divert natd all from 192.168.1.0/24,192.168.2.0/24,192.168.3.10/32 to any out via em1

Это позволило не перезагружать машину и не разрывать связь с Интернет.
На удаленке работало несколько человек, смотрелся фильм на ноутбуке, интернет-радио играло, подключены другие сети через ракун2.
Никто ничего не заметил. Красота.
Хотя как себя почувствует sendmail после таких сетевых "добавок", это еще вопрос...

Поправим скрипт с правилами.
У меня их: ipfw show|wc -l
     880

т.е. вроде не так много...

ee /etc/fw-script.conf
intvmnet="192.168.2.0/24"
intvmsrvnet="192.168.3.0/24"
${fw} add divert natd all from ${intnet},${intvmnet},${intvmsrvnet} to any out via ${extif}
${fw} add divert natd all from any to ${extip} in via ${extif}
...
#
${fw} add allow tcp from 192.168.1.207 1024-65535 to any 20,21,80,92,443
${fw} add allow tcp from any 20,21,80,92,443 to 192.168.1.207 1024-65535
${fw} add allow tcp from any 1024-65535 to 192.168.1.207 1024-65535
${fw} add allow tcp from 192.168.1.207 1024-65535 to any 1024-65535
#
# net for VM
${fw} add allow icmp from 192.168.2.10 to any
${fw} add allow icmp from any to 192.168.2.10
${fw} add allow udp from 192.168.2.10 1024-65535 to 192.168.1.1 53
${fw} add allow udp from 192.168.1.1 53 to 192.168.2.10 1024-65535
${fw} add allow udp from 192.168.1.1 53,1024-65535 to 192.168.2.10 53,1024-65535
${fw} add allow udp from 192.168.2.10 53,1024-65535 to 192.168.1.1 53,1024-65535
${fw} add allow udp from 192.168.2.10 123 to 192.168.1.1 123
${fw} add allow udp from 192.168.1.1 123 to 192.168.2.10 123
${fw} add allow tcp from 192.168.2.10 1024-65535 to any 20,21,80,92,443
${fw} add allow tcp from any 20,21,80,92,443 to 192.168.2.10 1024-65535
${fw} add allow tcp from any 1024-65535 to 192.168.2.10 1024-65535
${fw} add allow tcp from 192.168.2.10 1024-65535 to any 1024-65535
#
# net for hosts VM
${fw} add allow icmp from 192.168.3.10 to any
${fw} add allow icmp from any to 192.168.3.10
${fw} add allow udp from 192.168.3.10 1024-65535 to 192.168.1.1 53
${fw} add allow udp from 192.168.1.1 53 to 192.168.3.10 1024-65535
${fw} add allow udp from 192.168.1.1 53,1024-65535 to 192.168.3.10 53,1024-65535
${fw} add allow udp from 192.168.3.10 53,1024-65535 to 192.168.1.1 53,1024-65535
${fw} add allow udp from 192.168.3.10 123 to 192.168.1.1 123
${fw} add allow udp from 192.168.1.1 123 to 192.168.3.10 123
${fw} add allow tcp from 192.168.3.10 1024-65535 to any 20,21,80,92,443
${fw} add allow tcp from any 20,21,80,92,443 to 192.168.3.10 1024-65535
${fw} add allow tcp from any 1024-65535 to 192.168.3.10 1024-65535
${fw} add allow tcp from 192.168.3.10 1024-65535 to any 1024-65535
...
правила таблицы 24
...

А вручную так:
ipfw -q -N add 17969 allow tcp from 192.168.2.10 1024-65535 to any dst-port 20,21,80,92,443
ipfw -q -N add 18019 allow tcp from any 20,21,80,92,443 to 192.168.2.10 dst-port 1024-65535
ipfw -q -N add 18069 allow tcp from any 1024-65535 to 192.168.2.10 dst-port 1024-65535
ipfw -q -N add 18119 allow tcp from 192.168.2.10 1024-65535 to any dst-port 1024-65535
ipfw -q -N add 18120 allow icmp from 192.168.2.10 to any
ipfw -q -N add 18122 allow icmp from any to 192.168.2.10
#
ipfw -q -N add 17970 allow udp from 192.168.2.10 1024-65535 to 192.168.1.1 53
ipfw -q -N add 18030 allow udp from 192.168.1.1 53 to 192.168.2.10 1024-65535
ipfw -q -N add 17932 allow udp from 192.168.1.1 53,1024-65535 to 192.168.2.10 53,1024-65535
ipfw -q -N add 18032 allow udp from 192.168.2.10 53,1024-65535 to 192.168.1.1 53,1024-65535
#
ipfw -q -N add 17972 allow udp from 192.168.2.10 123 to 192.168.1.1 123
ipfw -q -N add 18034 allow udp from 192.168.1.1 123 to 192.168.2.10 123

ipfw show 17969 18019 18069 18119 18120 18122 17970 18030 17932 18032 17972 18034

Дадим доступ к BIND
ee /var/named/etc/namedb/named.conf

acl "trusted-dns" {
192.168.2.1;
192.168.3.1;
};

acl "vhost-dns" {
192.168.2.10;
192.168.3.10;
};

/etc/rc.d/named reload

Если не резолвится посмотрим лог
ee /var/named/var/log/named-security.log

Теперь смотрим настройки на хост-машине

Настроим внутри VM
ee /etc/rc.conf
clear_tmp_enable="YES"
syslogd_flags="-ss"
hostname="vm1.bhyve.loc"
keymap="ru.koi8-r.kbd"
ifconfig_vtnet0="inet 192.168.2.10 netmask 255.255.255.0"
defaultrouter="192.168.2.2"
local_unbound_enable="NO"
#local_unbound_enable="YES"
sshd_enable="YES"
ntpd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"

linux_enable="YES"

#EOF

По факту должны только linux_enable="YES" дописать и unbiund закомментировать, но о нем ниже.

Установим софт внутри VM
pkg version -v
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/FreeBSD:11:amd64/quarterly, please wait...
pkg: Error fetching http://pkg.FreeBSD.org/FreeBSD:11:amd64/quarterly/Latest/pkg.txz: No address record
A pre-built version of pkg could not be found for your system.
Consider changing PACKAGESITE or installing it from ports: 'ports-mgmt/pkg'.

cd /usr/ports/ports-mgmt/pkg
make install

kldload linux

cd /usr/ports/net/boinc-client
make config
  ------------------------- boinc-client-7.2.33_6 ---------------------------¬
  ¦ -----------------------------------------------------------------------¬ ¦
  ¦ ¦+[x] CLIENT       Build BOINC client                                  ¦ ¦
  ¦ ¦+[x] LINUX        Accept Linux science applications                   ¦ ¦
  ¦ ¦+[ ] MANAGER      Build BOINC manager GUI                             ¦ ¦
  ¦ ¦+[x] NLS          Native Language Support                             ¦ ¦
  ¦ ¦+[ ] SKINS        Install more skins for BOINC manager                ¦ ¦
  ¦ ¦+[x] USER         Create/check BOINC client user and directory        ¦ ¦
  ¦ ¦+[ ] X11          Build graphics API                                  ¦ ¦
  ¦ ¦-------------------- Command line options in script ------------------¦ ¦
  ¦ ¦+[ ] NO_GUI_RPC   Disable GUI RPC and socket (breaks boinc_curses)    ¦ ¦
  ¦ ¦+[x] NO_NET_INFO  Do not send host address and name to servers        ¦ ¦
  ¦ L----------------------------------------------------------------------- ¦
  +--------------------------------------------------------------------------+
  ¦                       <  OK  >            <Cancel>                       ¦
  L---------------------------------------------------------------------------

make install

===>   NOTICE:

The boinc-client port currently does not have a maintainer. As a result, it is
more likely to have unresolved issues, not be up-to-date, or even be removed in
the future. To volunteer to maintain this port, please create an issue at:

https://bugs.freebsd.org/bugzilla

More information about port maintainership is available at:

https://www.freebsd.org/doc/en/articles/contributing/ports-contributing.html#maintain-port

===>  Found saved configuration for boinc-client-7.2.33_6
===>   boinc-client-7.2.33_6 depends on file: /usr/local/sbin/pkg - found
=> boinc-client-7.2.33.tar.xz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch http://distcache.FreeBSD.org/local-distfiles/rene/boinc-client-7.2.33.tar.xz

================================================
===>  Found saved configuration for boinc-client-7.2.33_6
===>   boinc-client-7.2.33_6 depends on file: /usr/local/sbin/pkg - found
=> boinc-client-7.2.33.tar.xz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch http://distcache.FreeBSD.org/local-distfiles/rene/boinc-client-7.2.33.tar.xz
fetch: http://distcache.FreeBSD.org/local-distfiles/rene/boinc-client-7.2.33.tar.xz: No address record
=> Attempting to fetch http://distcache.us-east.FreeBSD.org/local-distfiles/rene/boinc-client-7.2.33.tar.xz
fetch: http://distcache.us-east.FreeBSD.org/local-distfiles/rene/boinc-client-7.2.33.tar.xz: No address record
=> Attempting to fetch http://distcache.eu.FreeBSD.org/local-distfiles/rene/boinc-client-7.2.33.tar.xz
fetch: http://distcache.eu.FreeBSD.org/local-distfiles/rene/boinc-client-7.2.33.tar.xz: No address record
=> Attempting to fetch http://distcache.us-west.FreeBSD.org/local-distfiles/rene/boinc-client-7.2.33.tar.xz
fetch: http://distcache.us-west.FreeBSD.org/local-distfiles/rene/boinc-client-7.2.33.tar.xz: No address record
=> Attempting to fetch http://distcache.FreeBSD.org/ports-distfiles/boinc-client-7.2.33.tar.xz
fetch: http://distcache.FreeBSD.org/ports-distfiles/boinc-client-7.2.33.tar.xz: No address record
=> Couldn't fetch it - please try to retrieve this
=> port manually into /usr/ports/distfiles/ and try again.
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/net/boinc-client
*** Error code 1

Stop.
make: stopped in /usr/ports/net/boinc-client

Заглючил unbound , на ровном месте...
Ключевое слово "No address record", т.е. "вдруг" пропало распознавание DNS адресов.
С какого перепугу?

Пробуем:
ping distcache.FreeBSD.org
ping: cannot resolve distcache.FreeBSD.org: Host name lookup failure

Перезапуск 
/etc/rc.d/local_unbound restart
Пробуем:
ping distcache.FreeBSD.org
ping: cannot resolve distcache.FreeBSD.org: Host name lookup failure

Выключаем его нафиг!
/etc/rc.d/local_unbound stop
ee /etc/rc.conf
local_unbound_enable="NO"
#local_unbound_enable="YES"

ee /etc/resolv.conf
#nameserver 127.0.0.1
#options edns0
nameserver 192.168.1.1

ping distcache.FreeBSD.org
PING distcache.geo.FreeBSD.org (77.88.40.109): 56 data bytes

О! IP получен, значит заработало...

Продолжаем теперь уже спокойно...
make install

Ок.
Готово.



guest
проходил мимо

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение guest » 2017-08-12 10:43:42

Visionman писал(а): Так, как мысли в слух...
Может мне поддержка что-то не договаривает и у них там фильтрация стоит, кто пакеты отправил, с какого адреса IP, какой мак карты и т.п.
Но открыто не говорят мне просто этого... что думаете ?

В любом случае, спасибо всем кто отвечает и подаёт идеи решения задачи! ))
inet 200.77.77.110 netmask 0xffffff00 broadcast 200.77.77.255
inet 200.77.77.120 netmask 0xffffff00 broadcast 200.77.77.255

верхнее не верно, но принципиально на коннективити не должно влиять.

первый алиас на em0 для 200.77.77.110 имеет полное право на маску /24,
а вот второй должен иметь маску /32 -> man ifconfig

теперь к вопросу, с подобным случаем сталкивался лишь один раз:
- свитч L3 в котором в таблице arp <-> ip, остался старый мак.
пришлось почистить на свитче, после чего ВМ взлетела.

Но в принципе, лучше отдельную карту для другой сети,
тогда с маршрутизацией и свитчами проблем не будет.

Visionman
рядовой
Сообщения: 27
Зарегистрирован: 2015-10-06 22:28:29

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Visionman » 2017-08-12 16:23:22

Demis
Искренне благодарю за мануал, тем более лично написанный, редко кто делится своими записями по настройке, почитаю обязательно.
Думаю увижу новое, взгляд другого специалиста на настройку, всегда интересен.

Гость
Похоже предположение, что поддержка что-то не договаривает, подтверждается.
Или на сам деле там arp таблица требует сброса, пока я делал настройки и эксперименты.

Для того чтобы всё-таки разобраться и решить уже наконец возникшую задачу.
Что собственно сделал, заключительная так сказать проверка.
Т.к. подсети разные, отложим пока вопрос работы через bridge разных подсетей.
Адрес что был выдан с сервером, вообще убираем из системы, работаем только с теми двумя, что выданы.

Возьмём два адреса из одной подсети, которые выданы отдельно к серверу.
- присвоим первый на физический интерфейс, никак алиас, а именно как основной и пропишем шлюз серверу, от выданных двух адресов
- второй используем в виртуальной машине

Напомню два выданных адреса

Код: Выделить всё

подсеть 200.77.77.0/24                    
адреса                       
200.77.77.110/24 - первый
200.77.77.120/24 - второй

Код: Выделить всё

Шлюз 200.77.77.1
Пропишем на сервере.

Код: Выделить всё

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:23:21:3c:33:b2
        inet 200.77.77.110 netmask 0xffffff00 broadcast 200.77.77.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active

Код: Выделить всё

# route add default 200.77.77.1

Код: Выделить всё

# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags     Netif Expire
default            200.77.77.1        UGS         em0
127.0.0.1          link#3             UH          lo0
200.77.77.0/24     link#1             U           em0
200.77.77.110      link#1             UHS         lo0

Код: Выделить всё

# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=59 time=1.226 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=59 time=1.501 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=59 time=1.950 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.226/1.559/1.950/0.298 ms
Интернет с первым адресом на хосте есть, отлично.
Продолжим...

Мост удалим и создадим снова

Код: Выделить всё

# ifconfig bridge0 destroy

Код: Выделить всё

# ifconfig bridge0 create
# ifconfig tap0 create
# ifconfig brdige0 addm em0 addm tap0 up

# ifconfig bridge0 up
# ifconfig tap0 up
Опции ещё раз

Код: Выделить всё

# sysctl -a | grep net.inet.ip.forwardin
net.inet.ip.forwarding: 1

Код: Выделить всё

# sysctl -a | grep net.link.tap.up_on_open
net.link.tap.up_on_open: 1

На хосте всё настроено, закончили.

---
Запускаем виртуальную машину, настроим интерфейс, берём второй адрес.

Код: Выделить всё

# ifconfig vtnet0 200.77.77.120 netmask 255.255.255.0
# route add default 200.77.77.1
# ifconfig vtnet0 up
Проверим пинг

Код: Выделить всё

# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
^C
--- 8.8.8.8 ping statistics ---
12 packets transmitted, 0 packets received, 100.0% packet loss
Увы, но и сейчас ничего не работает...
Перезагрузил сервер, настроил снова и опять ничего...

-------------------------------------------------------------------------------------

Решил уже кардинально!
Взял в аренду на другом хостинге выделенный сервер.

Заказал аналогичные услуги.

- основной IP адрес к серверу поумолчанию прилагаемый
*** в данной теме изменён для примера адрес, это 100.50.50.100/24 и шлюзом 100.50.50.1
- два IP адреса из одной подсети
*** в данной теме изменённые для примера адреса, это:
подсеть 200.77.77.0/24
адреса
200.77.77.110/24
200.77.77.120/24

Всё сделал аналогично, только с двумя адресами, как ранее, на первом сервере.

Кратко и по шагам ниже.
Новый выделенный сервер у другого хостинг провайдер(и даже не партнёр первого), система ОС FreeBSD 11.1-Release.
Поставлена мной лично через IPMI.

Загружаюсь и сразу к настройке.

1. Проверим интернет

Код: Выделить всё

# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=60 time=1.884 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=60 time=1.828 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=60 time=1.964 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=60 time=1.940 ms
^C
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
Есть, отлично!

Уберём поумолчанию присвоенный адрес серверу, чтобы использовать выделенные два.

Код: Выделить всё

# ifconfig bce0 remove

2. Присвоим первый адрес физическому интерфейсу сервера и вывод netstat -rn

Код: Выделить всё

# ifconfig bce0
bce0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=c00b9<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWTSO,LINKSTATE>
        ether d0:75:d5:hh:71:c5
        hwaddr d0:75:d5:hh:71:c5
        inet 200.77.77.110 netmask 0xffffff00 broadcast 200.77.77.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active

Код: Выделить всё

# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags     Netif Expire
default            200.77.77.1        UGS         bce0
127.0.0.1          link#3             UH          lo0
200.77.77.0/24     link#1             U           bce0
200.77.77.110      link#1             UHS         lo0
3. Включим необходимые опции

Код: Выделить всё

# sysctl -a | grep net.inet.ip.forwardin
net.inet.ip.forwarding: 1

Код: Выделить всё

# sysctl -a | grep net.link.tap.up_on_open
net.link.tap.up_on_open: 1
4. Создадим мост bridge0

Код: Выделить всё

# ifconfig bridge0 create
# ifconfig tap0 create
# ifconfig brdige0 addm bce0 addm tap0 up
Для надёжности, ещё раз...

Код: Выделить всё

# ifconfig bridge0 up
# ifconfig tap0 up
Проверим есть ли всё

Код: Выделить всё

# ifconfig bridge0
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 02:2c:8d:4e:58:00
        nd6 options=9<PERFORMNUD,IFDISABLED>
        groups: bridge
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: bce0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 1 priority 128 path cost 20000
        member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 4 priority 128 path cost 2000000
5. Запустим гостевую ОС FreeBSD-11.1 Release из того же файла-образа, что был создан ранее на другом выделенном сервере.
Настройка интерфейса.

Код: Выделить всё

# ifconfig vtnet0 200.77.77.120 netmask 255.255.255.0
# route add default 200.77.77.1
# ifconfig vtnet0 up
Проверим присвоение адреса и статус интерфейса.

Код: Выделить всё

ifconfig vtnet0
vtnet0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80028<VLAN_MTU,JUMBO_MTU,LINKSTATE>
        ether 00:a0:98:2c:af:59
        inet 200.77.77.120 netmask 0xffffff00 broadcast 200.77.77.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet 10Gbase-T <full-duplex>
        status: active
Добавим шлюз поумолчанию

Код: Выделить всё

# route add default 200.77.77.1

Код: Выделить всё

# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags      Netif Expire
default            200.77.77.1      UGS     vtnet0
127.0.0.1          link#2             UH          lo0
200.77.77.0/24    link#1             U        vtnet0
200.77.77.120       link#1             UHS         lo0
Проверим интернет!

Код: Выделить всё

# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=60 time=1.785 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=60 time=1.835 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=60 time=1.789 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=60 time=1.908 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=60 time=1.843 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=60 time=1.799 ms
^C
--- 8.8.8.8 ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.785/1.827/1.908/0.043 ms
Как видите - всё работает, сервер работающий под управлением гипервизора bhyve доступен по SSH.
Соединение с хостом - сетевой мост if_brdige.

Почему не работает на другом хостинге, в чём там дело ?
Пока мне лично не ясно, время аренды есть ещё там, отключать уж не буду.
Перенесу всё на новый хостинг, а на старом поразбираюсь ещё и уже предметно напишу в поддержку и пообщаюсь уже с их специалистами.

guest
проходил мимо

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение guest » 2017-08-12 22:56:15

Visionman писал(а): Почему не работает на другом хостинге, в чём там дело ?
Пока мне лично не ясно, время аренды есть ещё там, отключать уж не буду.
Перенесу всё на новый хостинг, а на старом поразбираюсь ещё и уже предметно напишу в поддержку и пообщаюсь уже с их специалистами.
что-то используется... mac-ip или иной контроль...

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Demis » 2017-08-14 12:58:58

Поддержу мысль guest, очень похоже на мак-привязки по портам в железке. Можно конечно попытаться tcpdump'ом посмотреть, но не всегда можно выловить. С другой стороны, если там еще и тегирование (vlan) вылезет, то м.б. это даст еще пищу для размышлений...

Отправлено спустя 50 минут 20 секунд:
И еще подумалось, если в силу тех или иных причин хочется именно этого хостера, то наверное через нат можно что-нибудь замутить. Хотя это может оказаться кошмарным.

Отправлено спустя 2 часа 12 минут 3 секунды:
На уровне ОБС (одна бабка сказала), попробовать взять исходный мак и "поиграть" с ним. Поменять последние байт, два. Только отследить чтобы не дублировал кого-либо и не вылетали пакетики с других интерфейсов с "невалидным" маком. Кто-то рассказывал, что в некоторых случаях прокатывало, типа блокировка работала только по первым шести байтам...

Аватара пользователя
Neus
капитан
Сообщения: 1976
Зарегистрирован: 2008-09-08 21:59:56

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Neus » 2017-08-14 18:57:37

А в маке больше 6 байт?
Physics is mathematics with the constraint of reality.
Engineering is physics with the constraint of money.

LOR захватили ситхи.
Добро пожаловать на светлую сторону!

Demis
прапорщик
Сообщения: 496
Зарегистрирован: 2015-05-25 14:36:32

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Demis » 2017-08-14 23:54:19

Ну очепятался (думал об одном, написал другое), бывает, их всего шесть, соответственно хотел сказать про первые три, те, что за производителем зашиты (http://standards.ieee.org/regauth/oui/oui.txt)...

Отправлено спустя 7 минут 7 секунд:
Была у меня как-то история десять лет назад, пришли новенькие компы из чудо-компании паровозо-хранилища у нескольких одинаковые маки. О! Вот это веселуха была!

Visionman
рядовой
Сообщения: 27
Зарегистрирован: 2015-10-06 22:28:29

FreeBSD 11.1 Release, bhyve и сетевой мост if_bridge

Непрочитанное сообщение Visionman » 2017-08-15 21:43:17

Demis писал(а): И еще подумалось, если в силу тех или иных причин хочется именно этого хостера, то наверное через нат можно что-нибудь замутить. Хотя это может оказаться кошмарным.
Лучше конечно как надо использовать ресурсы и решения в системе ))
А то точно кошмарным может стать администрирование такого )))

Используя PF и binat, можно настроить, нормально кстати нагрузку держит binat.
Пара проектов так работает.
В локальную сеть напрямую белый IP "светит".