Рейтинг:0

Пересылать широковещательные пакеты в динамические/подстановочные знаки

флаг cn

Я настроил динамическую службу ppp на Linux-машине, где клиенты будут подключаться и получать частный IP-адрес.

Правила, которые я установил в iptables в настоящее время:


sysctl -w net.ipv4.ip_forward=1

sysctl -w net.ipv4.ip_dynaddr=1

iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE

iptables -A ВВОД -i ppp+ -j ПРИНЯТЬ

iptables -A ВПЕРЕД -i ppp+ -j ПРИНЯТЬ

iptables -I PREROUTING -t nat -i ppp+ -p udp -s 10.0.10.3 -j DNAT --to 10.0.10.2

iptables -I PREROUTING -t nat -i ppp+ -p udp -s 10.0.10.2 -j DNAT --to 10.0.10.3


Моя предполагаемая функциональность заключается в том, чтобы любой, кто подключается к интерфейсу ppp, наследовал IP-адрес хоста и имел доступ к Интернету, а также мог общаться с одноранговыми узлами в той же сети. Успех!

За исключением широковещательных пакетов. Все, что отправляется на 255.255.255.255 или тому подобное, никому не доходит. Чтобы смягчить ситуацию, я жестко запрограммировал правила в жирный выше, однако это не динамическое решение, которое суммируется в зависимости от количества подключенных клиентов.

Мой вопрос в том, что я могу сделать, чтобы иметь решение iptables с подстановочными знаками для этого? В частности, в идеале мне нужно однолинейное решение, которое будет пересылать любой пакет udp с интерфейсов ppp на другие интерфейсы ppp, не мешая при этом другим правилам или пакетам tcp.

Заранее спасибо.

Редактировать Я сдался и попытался жестко запрограммировать правила для 100 IP-адресов, чтобы, по крайней мере, заставить его работать нормально.Даже в самом коротком формате, который я смог найти, я столкнулся с проблемой, что только первый правило вступит в силу для данного пакета, а это означает, что я не могу создать несколько правил для одного и того же пакета и не могу создать универсальное правило для одного IP-адреса для всей сети, потому что он отправит рассматриваемый пакет источнику как ну, что приводит к аналогичному сбою:

Скриншот правил

Редактировать 2 Я отказался, так как ни одно из найденных мной решений для iptables, к сожалению, не является масштабируемым или применимым в моем сценарии. Я оставлю этот вопрос открытым на тот случай, если у кого-нибудь есть способ добиться этого в одной или нескольких строках в iptables или иным образом.

А пока, пожалуйста, не стесняйтесь просматривать следующие документы, относящиеся к моему конкретному делу, если вам интересно или если вы находитесь в том же сегменте:

Пересылка широковещательных пакетов Cisco

Ретрансляция UDP-трансляций

Учебник по NAT

Документация по диапазону IP-адресов DNAT

Наконец, вот обходной путь, который я сейчас реализовал: https://github.com/udp-redux/udp-broadcast-relay-redux

флаг cn
Быстрое обновление: я пробовал эту команду в качестве альтернативы, но безуспешно: iptables -A PREROUTING -t nat -i ppp+ -p udp -s 10.0.10.0/24 -j DNAT --to 10.0.10.2-10.0.10.254

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.