Русскоязычное Linux-сообщество's Journal
 
[Most Recent Entries] [Calendar View]

Wednesday, January 9th, 2013

    Time Event
    10:43a
    /etc/acpi/lid.sh
    В общем модифицирую я этот код под себя (мол если плэйер играет, то не спим, а только гасим экран и т.д.) Оригинальный код не менялся уже лет 5...
    Все было хорошо, но вот с приходом Кубунты 12.10 заметил такую штуку. Если засынает при закрытии крышки, то после сна виджет питания у ноутбука, если он подключен к питанию не отображает после сна состояние, а считает что питание неизвестно... вайфай отпадает и только вкл-выкл вайфая приводит к подсоединению...
    И только после того как модифицировал код на:
    Read more... )
    10:33p
    Policy routing и Reverse Path Filtering
    Есть у меня машинка с двумя сетевыми интерфейсами (eth0 и eth1), подключёнными к разным провайдерам. Оба провайдера используют серые адреса и NAT. Пусть будут, скажем, 172.16.1.2 и 192.168.3.4. Default route смотрит в первого провайдера. Понадобилось мне отправить трафик на определённый порт через второго провайдера.

    Задача типичная, много раз в интернетах разжёванная.
    Создаём дополнительную маршрутную таблицу foo, добавляем в неё маршрут ip route add default via 192.168.3.1 dev eth1 table foo, маркируем нужный трафик с помощью iptables -t mangle -A PREROUTING -p tcp --dport $port -j MARK --set-mark 5, и маршрутизируем этот трафик по дополнительной таблице с помощью ip rule add fwmark 5 table foo.

    Трафик начинает ходить через eth1, но... уходит он с адреса 172.16.1.2, и естественно, ничего не работает. По совету лучших собаководов маскарадим маркированный трафик: -t nat -A POSTROUTING -m mark --mark 5 -j SNAT --to 192.168.3.4.

    Теперь трафик уходит с правильного адреса, ответы приходят, но... до программы не доходят.
    Дальнейшее гугление показало, что его убивает Reverse Path Filtering. Лечится путём echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter, и то же самое для eth1 и ещё для all, иначе таки не работает. Почему срабатывает RPF - не сильно понятно, по идее он должен убивать входящие пакеты, ответы на которые через этот интерфейс ходить не должны. А в данном случае они как раз должны.

    Вопрос: нельзя ли достичь нужного результата менее извращёнными методами, без SNAT и отключения RPF? Программа ни к какому адресу явно не байндится, он должен подставляться автоматически, а подставляется почему-то всегда только 172.16.1.2.

    Добавление к маршруту параметра src 192.168.3.4 (ip route add default via 192.168.3.1 dev eth1 src 192.168.3.4 table foo) никакого эффекта не дало. Чувствую, что я упустил какую-то простую вещь, но не пойму, какую..

    << Previous Day 2013/01/09
    [Calendar]
    Next Day >>

Русскоязычное Linux-сообщество   About LJ.Rossia.org