LINUX.ORG.RU
ФорумAdmin

Фиксация имени интерфейса у PPPD


0

0

Хотелось бы что бы pppd присваивал имена интерфейсам в соответсвии с определнными правилами, или хотя бы с именами устройств. К примеру что бы соединение на /dev/ttyZ0 при подъеме всегда соответсвовало ppp0, и т.п. Иначе достаточно тяжело настроить грамотно транзитный фаервол, когда в системе интерфейсы в произвольном порядке скачут. Кто и как это реализовывал?

anonymous

Используй параметр unit N, некоторые говорят, что у них не работает, но у меня прошло.

anonymous
()

никак (имхо, -- если кто-то занает способ, прошу ногами не пинать :)).

проще в файрволе создать постоянно сущестующие именованные цепочки праил, где и прописывать правила для каждого клиента. при поднятии ppp, создавать правила в основых цепочках (input, output, ...), только перенапраляющие трафик для этого интейрфейса в соответствующие именованные цепочки.

в /path/firewall-scripts/client_a.sh iptables -N client_a_in iptables -N client_a_out ... iptables -A client_a_in ... (тут всякие клиенто-зависимые правила) ...

в /etc/ppp/ip-up

if [ "${DEVICE}" == "/dev/ttyZ0" ]; then iptables -A INPUT -i ${IFNAME} -j "client_a_in" iptables -A OUTPUT -i ${IFNAME} -j "client_a_out" ... fi

anonymous
()

никак (имхо, -- если кто-то занает способ, прошу ногами не пинать :)).

проще в файрволе создать постоянно сущестующие именованные цепочки праил, где и прописывать правила для каждого клиента. при поднятии ppp, создавать правила в основых цепочках (input, output, ...), только перенапраляющие трафик для этого интейрфейса в соответствующие именованные цепочки.

в /path/firewall-scripts/client_a.sh
iptables -N client_a_in
iptables -N client_a_out
...
iptables -A client_a_in ...
(тут всякие клиенто-зависимые правила)
...

в /etc/ppp/ip-up

if [ "${DEVICE}" == "/dev/ttyZ0" ]; then
iptables -A INPUT -i ${IFNAME} -j "client_a_in"
iptables -A OUTPUT -i ${IFNAME} -j "client_a_out"
...
fi

anonymous
()

такую регулировку можно сделать через /etc/ppp/options.ttySXX структуру файла навскидку не помню, в понедельник если надо гляну

anonymous
()

> Иначе достаточно тяжело настроить
И даже ip-up и ip-down не помогают ?

spirit ★★★★★
()
Ответ на: комментарий от anonymous

> проще в файрволе создать постоянно сущестующие именованные цепочки праил, где и прописывать правила для каждого клиента.

А если клиентов - сотни? :)

Предложенное наверное не получиться. В моем случае как клиентские соединения из локалки, так и внешнее соединение с провайдером осуществляется по ppp. У разных клиентов разные политики доступа в интернет - кто-то имеет реальный IP, кто-то ходит через маскарад, кто-то ограничен в используемых протоколах и т.д. Более того, кто-то должен иметь возможность пройти транзитом на других клиентов, а кто-то - нет.

Когда клиент устанавливает соединение для него в фаерволе прописываются индивидуальные правила на основании этих самых политик доступа. Именно в отдельную цепочку ;) Вот здесь и требуется знать имя внешнего интерфейса в инет. А оно сейчас само скачет - при старте получилось ppp0, при разрыве и повторном соединении уже может быть другим. Поскольку клиентское соединение не рветься, правила, прописанные в фаерволе становяться не актуальными.

Если бы правила доступа были одинаковые для всех клиентов - проблемы бы не было, можно было бы при поднятии внешнего ppp корректировать фаервол. А здесь лучше всего четко знать, что внешний интерфейс ВСЕГДА ppp0 или еще какой...

VitalkaDrug ★★
()
Ответ на: комментарий от anonymous

>Используй параметр unit N, некоторые говорят, что у них не работает, но у меня прошло.

Меня смущает следующие слова для этой опции в мане - "for outbound connections". Надо будет попробовать...

VitalkaDrug ★★
()

а что стоит при поднятии ppp узнать какому клиенту принадлежит поднятый интерфейс и на основе этой инфы корректировать файрвол.

anonymous
()
Ответ на: комментарий от anonymous

> а что стоит при поднятии ppp узнать какому клиенту принадлежит поднятый интерфейс и на основе этой инфы корректировать файрвол.

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

Такое ощущение, что изменение таблиц одним процессом блокирует на некоторое время всю таблицу. Если в момент блокировки другой процесс через iptables пытается модифицировать правила, его команды игнорируются ядром.

Поэтому то я и стремлюсь сделать правила фаервола на узле по максимуму статическими.

VitalkaDrug ★★
()

Так в скрипте поднятия интерфейся ip-up.local всё напиши что тебе надо в зависимости от подсоединившегося клиента... И при поднятии интерфейса будет дописываться цепочка именно для него.

anonymous
()

<b>VitalkaDrug</b>
>>Используй параметр unit N, некоторые говорят, что у них не работает, но у меня прошло.
>Меня смущает следующие слова для этой опции в мане - "for outbound connections". Надо будет попробовать...

Ну не знаю, я локально соединял ppp5 -- ppp15 :)

anonymous
()

Попробовал опцию unit - работает на ура!

>Так в скрипте поднятия интерфейся ip-up.local всё напиши что тебе >надо в зависимости от подсоединившегося клиента... И при поднятии >интерфейса будет дописываться цепочка именно для него.

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

VitalkaDrug ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.