Перейти к содержанию

Маскарад через iptables


Рекомендуемые сообщения

Есть сервер на Линуксе (Gentoo) #1, с двумя сетевыми интерфейсами: eth0, eth1. Первый смотрит в сторону сети, а второй на один комп (ну их может быть и больше) вот схема:

___сеть__________________(#1) PC Linux iptables NAT_________(#2) PC Windows

{сеть 10.72.0.0/24}---[ <--eth1 -- 10.72.0.119/192.168.111.2 -- eth0--> ]---[192.168.111.3]

Нужно на #1 настроить маскард через iptables, впринцыпе ситуация довольно распрострённая.

Делая выводы из мегабайтов прочитанный манов пишу правила. Вот их варианты, ни одно не работает:

#iptables -t nat -A POSTROUTING -s 192.168.111.2 --out-interface eth1 -j SNAT --to-source 10.72.0.119

или вот

#iptables -t nat -A POSTROUTING -o 192.168.111.2 -j SNAT --to-source 10.72.0.119

Пинги с #2 не проходят до сети, настроено там всё правильно, т.е. в качестве шлюза установлен 192.168.111.3 .

В чём причина и как должны выглядить правила? действительно нужно использовать POSTROUTING?

Ну должно же оно работать!!! Mad

Помогите чем можете

Ссылка на комментарий
Поделиться на другие сайты

Не должно Smile

У Вас написано:

Цитата:

#iptables -t nat -A POSTROUTING -s 192.168.111.2 --out-interface eth1 -j SNAT --to-source 10.72.0.119

Что означает - подменять адрес отправителя на 10.72.0.119, если адрес отправителя == 192.168.111.2 и пакет будет отослан через интерфейс eth1. Это вообще не имеет никакого смысла. Пакет с src == 192.168.111.2 явялется локально сгенерированным и в нормальных условиях никогда не пойдет через eth1.

Чтобы настроить нат между подсетями, Вам нужны правила вроде:

iptables -t nat -A POSTROUTING -s 192.168.111.0/24 -d 10.0.0.0/8 -j SNAT --to-source 10.72.0.119

iptables -t nat -A POSTROUTING -d 192.168.111.0/24 -s 10.0.0.0/8 -j SNAT --to-source 192.168.111.2

Ссылка на комментарий
Поделиться на другие сайты

Dimnet писал(а) чт, 02 февраля 2006 14:55

Есть сервер на Линуксе (Gentoo) #1, с двумя сетевыми интерфейсами: eth0, eth1. Первый смотрит в сторону сети, а второй на один комп (ну их может быть и больше) вот схема:

/* skip */

Пинги с #2 не проходят до сети, настроено там всё правильно, т.е. в качестве шлюза установлен 192.168.111.3 .

В чём причина и как должны выглядить правила? действительно нужно использовать POSTROUTING?

Ну должно же оно работать!!! Mad

Помогите чем можете

Адрес шлюза не правильный. Должен быть 111.2

Ссылка на комментарий
Поделиться на другие сайты

Вот что делал:

#iptables -t nat -A POSTROUTING -s 192.168.111.0/24 -d 10.0.0.0/8 -j SNAT --to-source 10.72.0.119

#iptables -t nat -A POSTROUTING -d 192.168.111.0/24 -s 10.0.0.0/8 -j SNAT --to-source 192.168.111.2

#iptables -A FORWARD -i eth0 -j ACCEPT

#iptables -A FORWARD -i eth1 -j ACCEPT

#iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#echo "1" > /proc/sys/net/ipv4/ip_forward

Но не работает, с #2 пинги не проходят дальше #1 ессно. Sad

Что не так делал? Какие предложения?

Ссылка на комментарий
Поделиться на другие сайты

Запустите на №1 такое

tcpdump -i any src 192.168.111.3 or dst 192.168.111.3

Пропингуйте виндозную машину из подсети 10.72.0.0

ping 192.168.111.3 -c 1

И дайте вывод tcpdump'а

Ссылка на комментарий
Поделиться на другие сайты

Зачем? В сети 10.72.0.0 комп №1 НЕ установлен в качестве шлюза, ессно что tcpdump ничего не словит. Шлюзом он должен работать для компа №2 или с его подсетью.

Может кто уже настравил такое и покажет свои правила??? Embarassed

Ссылка на комментарий
Поделиться на другие сайты

Dimnet

почитайте доки уже. tcpip крупным планом и iptables tutorial.

Тогда будете не гадать на кофейной гуще а понимать что делаете.

Ссылка на комментарий
Поделиться на другие сайты

Dimnet писал(а) чт, 02 февраля 2006 19:54

Зачем? В сети 10.72.0.0 комп №1 НЕ установлен в качестве шлюза, ессно что tcpdump ничего не словит. Шлюзом он должен работать для компа №2 или с его подсетью.

Может кто уже настравил такое и покажет свои правила??? Embarassed

Я плакалъ. Значит, о том, чтобы пакеты дошли, Вы заботитесь, а как будут идти ответы и будут ли вообще - Вам все равно? Я такого еще не видел Laughing

Ссылка на комментарий
Поделиться на другие сайты

EvilShadow писал(а) пт, 03 февраля 2006 03:16

Запустите на №1 такое

tcpdump -i any src 192.168.111.3 or dst 192.168.111.3

Пропингуйте виндозную машину из подсети 10.72.0.0

ping 192.168.111.3 -c 1

И дайте вывод tcpdump'а

Если я правильно понял что Вы хотели, то нужно пинговать не с сети 10.72.0.0 а с компа №2 192.168.111.3 в сеть 10.72.0.0 что-то типа:

#ping 10.72.0.1

И ловить не пакеты с 192.168.111.3 (на №1) а транслированные тоесть 10.72.0.119

#tcpdump -i eth1 net 10.72.0.119

Ссылка на комментарий
Поделиться на другие сайты

#tcpdump -i eth0 net 192.168.111.3

Ессно ловит ТОЛЬКО исходяший icmp

#tcpdump -i eth1 net 10.72.0.119

#tcpdump -i eth1 192.168.111.3

ничего не ловят

Значит пакет теряется между eth1 и eth0 а точнее либо он не уходит дальше чем iptables либо чем eth0. Вероятней всего в iptables, от сюда следует что не правильно написаны правила.

Что ещё нужно паказать?

Ссылка на комментарий
Поделиться на другие сайты

Dimnet писал(а) чт, 02 февраля 2006 20:20

EvilShadow писал(а) пт, 03 февраля 2006 03:16

Запустите на №1 такое

tcpdump -i any src 192.168.111.3 or dst 192.168.111.3

Пропингуйте виндозную машину из подсети 10.72.0.0

ping 192.168.111.3 -c 1

И дайте вывод tcpdump'а

Если я правильно понял что Вы хотели, то нужно пинговать не с сети 10.72.0.0 а с компа №2 192.168.111.3 в сеть 10.72.0.0 что-то типа:

#ping 10.72.0.1

И ловить не пакеты с 192.168.111.3 (на №1) а транслированные тоесть 10.72.0.119

#tcpdump -i eth1 net 10.72.0.119

Я хотел сказать именно то, что сказал, а если Вы считаете, что я неправ - значит, Вы меня не поняли.

1. Кого откуда пинговать - абсолютно не принципиально. Результат будет одинаковый - пинг будет ходить и так и так.

2. Зачем было указывать спецификатор net и указывать тут же адрес _хоста_? Что это вообще должно означать? Confused

Ссылка на комментарий
Поделиться на другие сайты

Dimnet писал(а) чт, 02 февраля 2006 20:37

#tcpdump -i eth0 net 192.168.111.3

Ессно ловит ТОЛЬКО исходяший icmp

#tcpdump -i eth1 net 10.72.0.119

#tcpdump -i eth1 192.168.111.3

ничего не ловят

Значит пакет теряется между eth1 и eth0 а точнее либо он не уходит дальше чем iptables либо чем eth0. Вероятней всего в iptables, от сюда следует что не правильно написаны правила.

Что ещё нужно паказать?

Как Вы думаете, почему я в примере написал

tcpdump -i any?

Сообщения об ошибках надо не пересказывать, а цитировать (с) (добавлю от себя - это касается не только сообщений об ошибках)

Ссылка на комментарий
Поделиться на другие сайты

Для сети 192.168.111.0/24 Поставь шлюзом 192.168.111.2

#echo "1" > /proc/sys/net/ipv4/ip_forward

#iptables -F

#iptables -t nat -A POSTROUTING -o eth1 -s 192.168.111.0/24 -d 10.0.0.0/8 -j SNAT --to-source 10.72.0.119

#iptables -P FORWARD ACCEPT

Пинги будут идти тока из сети 192.168.111.0/24 в сеть 10.0.0.0/8

Что бы шли из 10.0.0.0/8 Нужно в это сети для сети 192.168.111.0/24

поставить шлюзом машину 10.72.0.119 и воткнуть правило:

#iptables -t nat -A POSTROUTING -o eth0 -d 192.168.111.0/24 -d 10.0.0.0/8 -j SNAT --to-source 192.168.111.2

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...