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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.