Гугл предлагает кучу вариантов, но все они относятся к совсем старым версиям, и на 8-ю ветку не подходят. Например, ядро на опцию options BRIDGE говорит, что не знает такого. sysctl тоже не знает таких опций, как net.link.ether.bridge, и т.д.
В общем, из того, что удалось найти, сделал следующее:
Собрал ядро, которое отличается от GENERIC прописанной в конце строчкой:
Код: Выделить всё
device if_bridge
В качестве альтернативы своему ядру пробовал подгружать к стандартному ядру модули через /boot/loader.conf:
Код: Выделить всё
if_bridge_load="YES"
bridgestp_load="YES"
em0 я подключил только для управления из внутренней сети, между em1, em2 собственно планируется мост, для проброса инета.
Соотв, к em1 подключена машина с winxp, которая должна иметь внешний ип и доступ к инету, к em2 подключен канал инета.
Вот rc.conf:
Код: Выделить всё
gateway_enable="YES"
ifconfig_em0="inet 192.168.xx.9 netmask 255.255.255.0"
defaultrouter="192.168.xx.6"
cloned_interfaces="bridge0"
ifconfig_bridge0="addm em1 addm em2"
ifconfig_em1="inet 83.xxx.xxx.105 netmask 255.255.255.240"
Код: Выделить всё
net.link.bridge.ipfw: 0
net.link.bridge.inherit_mac: 0
net.link.bridge.log_stp: 0
net.link.bridge.pfil_local_phys: 0
net.link.bridge.pfil_member: 1
net.link.bridge.pfil_bridge: 1
net.link.bridge.ipfw_arp: 0
net.link.bridge.pfil_onlyip: 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:50:56:99:7d:75
inet 192.168.xx.9 netmask 0xffffff00 broadcast 192.168.xx.255
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
em1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 00:50:56:99:7d:76
inet 83.xxx.xxx.105 netmask 0xfffffff0 broadcast 83.xxx.xxx.111
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
em2: flags=8902<BROADCAST,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 00:50:56:99:7d:77
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 0e:2e:e0:6d:fe:ec
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: em2 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 3 priority 128 path cost 20000
member: em1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 2 priority 128 path cost 20000
tcpdump -i em1 - вывод пустой.
bridge0 и em2 - аналогично.
Пинг между виндовой машиной и интерфейсом роутера (83.xxx.xxx.105) есть.
На vmware на этих 2 виртуальных свитчах promiscuous mode включил.
Куда копать дальше - ума не приложу...