| 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) никакого эффекта не дало. Чувствую, что я упустил какую-то простую вещь, но не пойму, какую.. |