Longobard
написал 14 июля 2007 года в 15:57 (917 просмотров)
Ведет себя
как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.
Обрисую ситуацию:
есть у меня два провайдера
1) матрикс, шлюз 10.1.0.2
2) сильвер, шлюз 85.249.73.1
в матриксе у меня внутренний ип, в сильвере — статический внешний.
Хочу сделать так:
1) весь исходящий интернет-трафик идет через матрикс.
2) При этом из интернета по моему статическому внешнему ипу нужно попасть ко мне на комп.
Как это реализовать? Жопой чую, что через iproute2. Но как конкретно?
Спасибо за советы, подскажите куда копать.
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Ниичего хитрого тут нет, наверное.
Скажи, компьютер, с которого ты хочешь попадать на свою машину, имеет статический ip?
<font size=«-2»><font color=«red»>Серёга, а при чём тут IP удалённого компа?</font></font>
я хочу попадать на свою машину с любой точки интернета.
документацию читать не пробовал? ;)
IPtables:
-j ROUTE
дефолтный шлюз — на матрикс
для пакетов с внешнего IP — на сильвер
IProute:
если бы у него компьютер из интернета имел статический ip, то не надо было бы мудрить с iptables и т.д.
да ну? так же с маршрутами и пришлось повозиться.
только с более привычными — по адресу назначения, а не по адресу источника.
но это было бы совсем просто ;)
iptables ругаецо на параметр --gw. Хотя в документации он есть, таблица mangle есть, в едре все включено. Шозах?
Не покатит оно так.
Пакет в «-A OUTPUT» попадает уже после таблицы маршрутизации. Да и кто такой «$EXT_IP»?
Проще всего пакет промаркировать в iptables, а роутинг строить в соответствии с полученной маркировкой.
($EXT_IF — это имя интерфейса, в который воткнут шнурок от Silver)
Затем, создаём таблицу для iproute2, в которую будут заноситься правила роутинга для Сильвера (например, silver):
После чего, собственно, сам роутинг (через ’silver' пускаем промаркированные пакеты извне, всё остальное — по каналу Матрикса):
Да, в конце всех действий необходимо сбросить кэш таблиц маршрутизации:
лично у меня что-то в 2.6.21.5 вообще куда-то ROUTE про…терялся:
так что как-то оно…
давай второй метод пробуй… ;)
зачем маркировать? делаем source-based routing в чистом виде. даже маркировать не надо.
это было написано 2 разных способа. и, кстати, то, что попало оно в OUTPUT после маршрутизации ничего не значит — мы его ловим на моменте выброса в интерфейс и направляем в другой интерфейс/шлюз.
хотя, не роялит, ибо у меня нет акшена такого, почему-то.
а уж я-то полный iptables собираю в ядрах всегда.
У меня возникли сомнения насчёт: «ip rule add from $EXT_IP table 200». Хотя… пакет с локальной машины… может быть и прокатит… и без маркировки. Барду пробовать надо.
Угу, я понал (не сразу, конечно, но понял) ;). Просто $EXT_IP у тебя фигурирует в обоих.
Да вот именно, что перехреначивание шлюза уже после того, как решение о маршрутизации принято, выглядит как-то ммм… как минимум, некрасиво =).
Попробовал сам. Зря я тут воду мутил. Тех трёх строчек настройки роутинга, которые привёл Genie, должно хватить для решения задачи Барда.
ну дык зря я, что ли, работаю? ;)
и не такое настраивать приходилось :)
всем спасибо :)
Попробую все-таки вариант Флая, потому что мой иптабль упорно не понимает --gw :)
Мой вариант он должен работать, но всё-таки больше подходит для роутера. А у тебя локальная машина, и того, что показал Genie с iproute2, должно хватить. Я про это:
у меня она еще и роутер. В ней есть третья сетевуха, которая ведет к вай-вайному аксесспойнту