Dimnet Опубликовано 2 февраля, 2006 Жалоба Опубликовано 2 февраля, 2006 Есть сервер на Линуксе (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? Ну должно же оно работать!!! Помогите чем можете Цитата
Ineu Опубликовано 2 февраля, 2006 Жалоба Опубликовано 2 февраля, 2006 Не должно У Вас написано: Цитата: #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 Цитата
Sleeping Daemon Опубликовано 2 февраля, 2006 Жалоба Опубликовано 2 февраля, 2006 Dimnet писал(а) чт, 02 февраля 2006 14:55 Есть сервер на Линуксе (Gentoo) #1, с двумя сетевыми интерфейсами: eth0, eth1. Первый смотрит в сторону сети, а второй на один комп (ну их может быть и больше) вот схема: /* skip */ Пинги с #2 не проходят до сети, настроено там всё правильно, т.е. в качестве шлюза установлен 192.168.111.3 . В чём причина и как должны выглядить правила? действительно нужно использовать POSTROUTING? Ну должно же оно работать!!! Помогите чем можете Адрес шлюза не правильный. Должен быть 111.2 Цитата
SignFinder Опубликовано 2 февраля, 2006 Жалоба Опубликовано 2 февраля, 2006 кроме маскарада еще форвард должен быть открытым в обе стороны. Цитата
cerber_spb Опубликовано 2 февраля, 2006 Жалоба Опубликовано 2 февраля, 2006 И включи в ядре форвардинг: echo "1" > /proc/sys/net/ipv4/ip_forward Цитата
Dimnet Опубликовано 2 февраля, 2006 Автор Жалоба Опубликовано 2 февраля, 2006 Вот что делал: #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 ессно. Что не так делал? Какие предложения? Цитата
Ineu Опубликовано 2 февраля, 2006 Жалоба Опубликовано 2 февраля, 2006 Запустите на №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'а Цитата
Dimnet Опубликовано 2 февраля, 2006 Автор Жалоба Опубликовано 2 февраля, 2006 Зачем? В сети 10.72.0.0 комп №1 НЕ установлен в качестве шлюза, ессно что tcpdump ничего не словит. Шлюзом он должен работать для компа №2 или с его подсетью. Может кто уже настравил такое и покажет свои правила??? Цитата
SignFinder Опубликовано 2 февраля, 2006 Жалоба Опубликовано 2 февраля, 2006 Dimnet почитайте доки уже. tcpip крупным планом и iptables tutorial. Тогда будете не гадать на кофейной гуще а понимать что делаете. Цитата
Ineu Опубликовано 2 февраля, 2006 Жалоба Опубликовано 2 февраля, 2006 Dimnet писал(а) чт, 02 февраля 2006 19:54 Зачем? В сети 10.72.0.0 комп №1 НЕ установлен в качестве шлюза, ессно что tcpdump ничего не словит. Шлюзом он должен работать для компа №2 или с его подсетью. Может кто уже настравил такое и покажет свои правила??? Я плакалъ. Значит, о том, чтобы пакеты дошли, Вы заботитесь, а как будут идти ответы и будут ли вообще - Вам все равно? Я такого еще не видел Цитата
Dimnet Опубликовано 2 февраля, 2006 Автор Жалоба Опубликовано 2 февраля, 2006 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 Цитата
Dimnet Опубликовано 2 февраля, 2006 Автор Жалоба Опубликовано 2 февраля, 2006 #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, от сюда следует что не правильно написаны правила. Что ещё нужно паказать? Цитата
Ineu Опубликовано 2 февраля, 2006 Жалоба Опубликовано 2 февраля, 2006 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 и указывать тут же адрес _хоста_? Что это вообще должно означать? Цитата
Ineu Опубликовано 2 февраля, 2006 Жалоба Опубликовано 2 февраля, 2006 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? Сообщения об ошибках надо не пересказывать, а цитировать (с) (добавлю от себя - это касается не только сообщений об ошибках) Цитата
cerber_spb Опубликовано 3 февраля, 2006 Жалоба Опубликовано 3 февраля, 2006 Для сети 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 Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.