REDkiy
написал 7 июня 2006 года в 14:18 (833 просмотра)
Ведет себя
как мужчина; открыл 90 тем в форуме, оставил 595 комментариев на сайте.
Меня слегка переглючило и я немогу правильно построить правила:
Задача:
Сеть 1 — 192.168.1.0/24
Сеть 2 — 192.168.2.0/24
Между ними комп с 2 сетевухами:
eth0 — 192.168.1.1/24
eth1 — 192.168.2.1/24
Нужно связать эти сетки через iptables.
1 пример — нужно пакеты из 1 сети отправлять во 2 (ну вроде моста,быть может)
2 пример — первая сеть это типа интернет,а вторую нужно выпускать в него по NAT.
Примеры треба простые,но понятные.И ещё вообщем я прочёл пару туториалов, и основные понятия и порядок движения по цепочка и какая таблица где,примерно представляю.
Сама логика построения правил от меня ускользает.
Спасибо.
Последние комментарии
- OlegL, 17 декабря в 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
Экология и вегетарианство на благо всем живым существам Планеты.
чтобы первый пример работал, надо:
1) включить ip_forward. не могу сказать, где в твоем дистрибутиве настраивается, ибо ты не дал информацию о нем. если выполнить это
, то перезагрузки будет работать (для второго примера это тоже необходимо :));
2) выставить политики в цепочке FORWARD на твоем шлюзе в ACCEPT;
3) настроить маршрутизацию на узлах, которые находятся за разными интерфейсами твоего шлюза, чтобы пакеты знали куда им идти из 192.168.1.0/24 в 192.168.2.0/24 и наоборот;
для начала этого достаточно, если я под вечер нормально сооброжаю :)
про второе:
я тут что-то не понял…
тебе надо, чтобы пакеты из 192.168.1.0/24 натились на ip-адрес eth1 твоего шлюза?
Насколько я понял, автор хочет что-то типа этого:
Я понимаю это правило так:
Пакеты,адрес источника которых находится в диапазоне 192.168.2.0/24,отправляются на интерфейс eth0 и им в качестве источника прописывается адрес 192.168.1.1,адрес назначения не меняется.
Я правильно понял это правило?
потом(или сначала) делаю так:
То есть никаких правил прописывать ненужно просто включить форвардинт?
А без настройки маршрутизации обойтись можно?
нет. ещё или SNAT, или MAQUERADE правило необходимо.
ну и для conntrack (_ftp) и прочих.
ну если только тебя устроит функциональность squid и прочих прокси.
Это вроде понял.
Касательно предыдущего моего сообщения интересно услышать мнение.
Не «на интерфейс eth0», а «с интерфейса eth0». А так, суть правильно понял.
После ввода команды «iptables -t nat -A …» перечисленные тобой модули должны загрузиться сами.
А форвардинг пакетов между интерфейсами без разницы, когда включать. Хотя лучше всего, вместе со стартом системы, прописав эту единичку в соответствующем параметре файла sysctl.conf.
Для «примера №1», вобщем-то, и не надо.
Опять же, для «примера №1» без настройки маршрутизации на клиентских машинах не обойтись. Правда, «маршрутизация» — это слишком страшно сказано =). Там каждому клиенту достаточно будет выставить в качестве шлюза по умолчанию адрес смотрящего в его сеть интерфейса.
Для первого примера.
Вот к чему я пришёл:
если так:
Достаточно сделать так:
И на клиентах указать адрес шлюза.
Если же так (что вообщем то мне кажется более правильным,и насколько я понимаю не только мне):
То нужно уже делать так:
Эффект интересен, комп на котором это настроено не отвечает на запросы,но при этом исправно связывает две сетки.
Со вторым пока разбираюсь.
Угу, примерно про это и рассказывал Эвил в своём первом ответе ;).
В цепочке FORWARD настраиваются правила фильтрации для пакетов, предназначенных НЕ для локальной машины, а ммм… проходящих через неё. (т.е. транзитный трафик). Его ты разрешил своими правилами.
Фильтры для пакетов, предназначенных для твоего (и, соответсвенно, от твоего) компа, настраиваются в цепочках INPUT и OUTPUT. Правил для них ты не настраивал, а политики этих цепочек выставил в DROP. Вот и не отвечает твой рутер на «запросы».
Это всё понятно и так.
Просто это сравни колдовству,настолько чётко всё держишь в руках,аж дух захватывает! 8-)
В виндах у меня такое получается довольно редко. 8-(
никакого шаманства тут нет. это — просто настройка ;)
а то, что тебя так радует — одно из многих преимуществ UNIX над windows ;)
Я осваиваю iptables по:
«Iptables Tutorial 1.1.19» — Oskar Andreasson,в переводе Андрея Киселёва,
частично «Сетевые средства Linux» — Родерик В. Смит.
Помощь на данном форуме значительно помогает,
ну и так гугль.ру. 8-)
Вопрос такой возник:
При настройке натирования нужно указывать адрес компутера-роутера?
да, именно так. ты должен указать ip-адрес интерфейса, который, например, смотрит у тебя в Интернет. Конечно, в твоей схеме это может быть и не Интрнет, а локальная сеть, на выходе из которой ты поставишь свой роутер. Ты лучше схему дай с ip-адресами, тогда понятнее и тебе, и всем остальным будет… ;)
какой из адресов тебя интересует?
у шлюза их минимум два. (за исключением lo)
Да чиво-та я перемудрил.
Схема с ip такая как я писал в начале.Есть у меня мини-полигон такой(но это не надолго,занимать целых две! машины бесконечно невозможно).
Насчёт натирования запутанно черезмерно у меня получилось,уж извиняйте пожалуйста.
Попробуем так:
Есть комп,на нём Debian GNU/Linux «Sarge».
eth0 — 192.168.1.1/24 — смотрит в локальную сеть
eth1 — 192.168.2.1/24 — смотрит на ADSL-модем.
Правило для iptables я представляю так:
Не пробовал ещё,так что с уверенностью сказать работает или нет немогу,проверю позже.
Нужна ли при этом какая-либо настройка клиентов?
Если тебе надо, чтобы первая сетка (1.х) выходила под одним адресом 192.168.2.1 (натилась) во вторую сеть (2.х), то всё так, за исключением '--out-interface'. «Исходящий» (out) интерфейс должен смотреть в ту сеть, в которую натится локалка, т.е. в твоём случае out-interface — eth1.
Нужна настройка соответствующих маршрутов (или просто каждому клиенту в качестве шлюза по умолчанию задать смотрящий в его сеть адрес рутера, чего ты уже, судя по всему, и сделал).
в общем — правильно.
для простоты можно и MASQUERADE использовать.
но на статическом адресе — как у тебя — можно и SNAT (даже лучше) использовать.
прописать им «Шлюз по умолчанию» внутренний адрес твоего шлюза. и всё.
кстати, почитать про активный/пассивный ftp — тоже не лишнее. у него дополнительная настройка есть. (да и не только это касается ftp, ну да ладно)
Ошибся,имел в виду eth1.
То есть отправили с eth1 на модем,а дальше модем сам разберётся куда-кому?
Ох! Ну не всё сразу! Про IRC я помню тоже.
По идее, должен.
Это я так для очистки совести.8-)
Завтра напишу примерный скрипт и отдам на растерзание.
Блин,еще скрипты учиться писать 8-).
Вот скрипт,сильно не ругайте,конструктивные предложения принимаются: