Назад | Перейти на главную страницу

iptables широковещательный адрес DNAT

У меня проблемы с использованием iptables для изменения адреса назначения широковещательного пакета. Я читал несколько мест, где iptables / Linux не пересылает широковещательные пакеты, поэтому ищу альтернативы.

Моя сеть настроена как / 30, поэтому широковещательный трафик отправляется мне на x.x.x.3. Я попытался открыть подсеть на моем локальном компьютере, чтобы x.x.x.3 больше не мой широковещательный адрес, но MAC-адрес назначения пакета - ff: ff: ff: ff: ff: ff: xx: xx: xx: xx: xx: xx: xx: xx, поэтому я считаю, что он все еще интерпретируется как широковещательный пакет.

Есть ли способ изменить MAC-адрес назначения пакета?

Существуют ли какие-либо инструменты, кроме iptables, которые будут выполнять эту операцию?

Если я не могу найти способ обойти это, я думаю, что приму этот пакет локально и напишу программу, которая будет отправлять данные пакета желаемому получателю. Есть ли причина, по которой это не должно работать?

Спасибо!

Использование моста сработало бы, если бы я хотел передавать ВСЕ трафик с одного интерфейса на другой, однако мне нужно было сохранить часть трафика локально.

Насколько я могу судить, невозможно использовать iptables для пересылки широковещательного пакета. В итоге я просто написал программу, которая повторно передает полученные пакеты на другой интерфейс.

Вы хотите соединить две идентичные сети. Вам нужно использовать SNAT и DNAT, чтобы сеть A считала сеть B имеющей разные адреса. Но почему вы хотите пересылать широковещательные пакеты? Если он должен заставить работать такие протоколы, как SMB и протоколы автоматического обнаружения, то они, вероятно, все равно не будут работать, когда они получат ответы из-за пределов сети, в которую они транслировали.

Если вы хотите иметь уникальные адреса, а не NAT, то то, что вам нужно, называется мостом. Пятнадцать лет назад я сделал это с помощью OpenBSD. Я хотел установить брандмауэр между двумя компьютерами, находящимися в одной подсети. Это было легко и хорошо работало. В то время Linux не был на это способен (мост, но не с брандмауэром), сегодня я думаю, что это должно быть возможно.