Приветствую всех еще раз.
Итак, дубль 3.
Есть FreeBSD 77.0-RELEASE-p9 FreeBSD 7.0-RELEASE-p9 #0: Mon Feb 9 03:49:47 MSK 2009
Есть 2 внешние сетевые
#ifconfig
em0: flags=8c43<UP,BROADCAST,RUNNING,OACTIVE,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
ether 00:30:48:d2:21:2c
inet 212.24.48.56 netmask 0xfffffe00 broadcast 212.24.49.255
inet 212.24.48.57 netmask 0xfffffe00 broadcast 212.24.49.255
inet 212.24.48.58 netmask 0xfffffe00 broadcast 212.24.49.255
inet 212.24.48.59 netmask 0xfffffe00 broadcast 212.24.49.255
inet 212.158.161.117 netmask 0xfffffe00 broadcast 212.158.161.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4>
ether 00:30:48:d2:21:2d
inet 212.24.48.60 netmask 0xfffffe00 broadcast 212.24.49.255
inet 212.24.48.61 netmask 0xfffffe00 broadcast 212.24.49.255
inet 212.24.48.62 netmask 0xfffffe00 broadcast 212.24.49.255
inet 212.24.48.63 netmask 0xfffffe00 broadcast 212.24.49.255
inet 212.158.161.118 netmask 0xfffffe00 broadcast 212.158.161.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33204
Обе, соответственно, на одном прове, с одним гейтвеем: 212.158.160.1.
Есть PF, IPFW, NATD итп.
Есть nginx, как отдающий сервер. Принимает запросы с любых IP.
Есть необходимость все, пришедшее на 212.158.161.117 отдавать с em0 и все пришедшее на 212.158.161.118 с em1. На данный момент любой запрос, пришедший куда угодно, отдает em0.
Карты не битые, проблем с провом нет. Гонял трафик между картами (не локально, через свич прова), обе карты забивают каналы в обе стороны на 100% (ну почти).
Переписал кучу правил для ipfw, для ipfw+natd, для pf, в результате отдавать трафик em1 удалось, но отдаёт она его с ужасно маленькой скоростью. Пров говорит, что нужно для второй сетевой прописать гейтвей и маршрут, т.к. по дефолту все прописано на em0
#netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 212.158.160.1 UGS 0 629570235 em0
127.0.0.1 127.0.0.1 UH 0 14413026 lo0
212.24.48.0/23 link#1 UC 0 0 em0
212.158.160.0/23 link#1 UC 0 0 em0
212.158.160.1 00:00:0c:9f:f0:0f UHLW 2 0 em0 395
212.158.160.2 00:0c:cf:47:11:c0 UHLW 1 0 em0 1200
212.158.160.3 00:15:c7:27:ad:80 UHLW 1 0 em0 1200
212.158.161.117 00:30:48:d2:21:2c UHLW 1 228 lo0
Но разве route-to в pf не делает этого? В общем уже пару недель вожусь, ничего не получается. Готов оплатить помощь, точнее результат. Если кто сталкивался с подобным — пишите или оставляйте свои аськи. Могу дать рута, могу выписать KVM, но все работы нужно проводить ночью, т.к. сервер «живой».
Возможно поможет, логи забиты примерно следующим:
Feb 6 23:00:08 g3 kernel: arp: 212.158.160.2 is on em0 but got reply from 00:0c:cf:47:11:c0 on em1
Feb 6 23:00:08 g3 kernel: arp: 212.158.160.2 is on em0 but got reply from 00:0c:cf:47:11:c0 on em1
Feb 6 23:00:08 g3 kernel: arp: 212.158.160.3 is on em0 but got reply from 00:15:c7:27:ad:80 on em1
Feb 6 23:00:08 g3 kernel: arp: 212.158.160.3 is on em0 but got reply from 00:15:c7:27:ad:80 on em1
Feb 6 23:00:09 g3 kernel: arp: 212.158.160.2 is on em0 but got reply from 00:0c:cf:47:11:c0 on em1
Feb 6 23:00:09 g3 kernel: arp: 212.158.160.3 is on em0 but got reply from 00:15:c7:27:ad:80 on em1
Feb 6 23:00:09 g3 kernel: arp: 212.158.160.3 is on em0 but got reply from 00:15:c7:27:ad:80 on em1
Feb 6 23:00:09 g3 kernel: arp: 212.158.160.2 is on em0 but got reply from 00:0c:cf:47:11:c0 on em1
Feb 6 23:00:09 g3 kernel: arp: 212.158.160.3 is on em0 but got reply from 00:15:c7:27:ad:80 on em1