PIM в деталях не знаю. У меня ситуация такая: на внешнем интерфейсе ip нет (арп зафильтрован тоже), инет по PPPoE, порт.сек. пропускает через порт только один мак. Поэтому у меня ng_ether на внешнем интерфейсе подставляет свой мак, вместо маков с локалки. Если требуется чтобы на внешку улетал определённый src-ip то можно подключить ng_patch двумя хуками к ng_bpf и перенаправить пакеты в upstream через него, а в нём по оффсету менять 4 байта=ip-src, и ещё нужно выставить CSUM_IP (и CSUM_UDP?), если сетевуха поддерживает аппаратно их расчёт и/или если на принимающей стороне не проверяется контрольная сумма ip пакетов то всё будет работать и пакеты будут валится провайдеру не только с одного мак адреса но и с одного ip. В моём случае прову пофик с какого IP летят пакеты, поскольку они могут лететь только на мультикаст адреса, а для мультикаста арп не нужен, там просто 4 байта IP адреса помешаются в старшие 4 байта MAC адреса.
|