Category: праздники

Category was added automatically. Read all entries about "праздники".

  • dil

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

binat

А вот тут я что-то туплю после праздников.

А кто нибудь делал binat? Просто я до сих пор никогда не сталкивался с необходимостью, а тут припёрло. Почему-то мне кажется, что комлект из snat+dnat работать так как надо не будет. Или будет?
Зеленое солнце

значение предыдущего месяца в shell

Перво-наперво..
Всех программистов с неофициальным праздником - Днем программиста!
Подскажите как получить в shell скрипте значение предыдущего месяца?
В числовом или текстовом формате, используя date.
Спасибо.

Upd. Решение найдено.