iptables - проблема на ровном месте

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

lilovip
Сообщения: 13

iptables - проблема на ровном месте

Сообщение lilovip »

Здравствуйте.
Встала максимально тривиальная задача. Есть Desktop под Debian (рабочая домашняя машина) и ноутбук под WinXP (из-за аппаратной неисправности проца Linux там падает). Нужно вывести ноут в Интернет через Десктоп используя NAT. На десктопе сетевые интерфейсы: eth0 - локалка с провайдером 10.22.0.0/16, адрес 10.22.117.155; ppp0 - тунель через локалку провайдера, через который выход в Интернет, адрес 79.98.xxx.yyy, IP белый, прямой; eth1 - локалка с ноутом 192.168.1.0/24, адреса 192.168.1.16 у десктопа и 192.168.1.5 у ноута.
Задача проще некуда: либо так:

Код:

iptables -t nat -A POSTROUTING -s 192.168.1.5 -j MASQUERADE

либо так (адреса хоть и выдаются провайдером по DHCP, но уже год как не менялись):

Код:

iptables -t nat -A POSTROUTING -s 192.168.1.5 -d 10.22.0.0/16 -c 0 0 -j SNAT --to-source 10.22.117.155 iptables -t nat -A POSTROUTING -s 192.168.1.5 -d ! 10.22.0.0/16 -c 0 0 -j SNAT --to-source 79.98.xxx.yyy

На ноуте, понятно, прописываем 192.168.1.16 шлюзом и DNS-ы провайдера.
Поднимаю я такую систему, пингую с ноута хоть провайдерскую локалку, хоть внешние адреса (и по имени, и по адресу) - ответа нет. Пинг до десктопа идёт отлично. На десктопе смотрел tcpdump'ом - пакеты с ноута с ICMP или DNS запросом приходят - с правильными адресами получателя, всё правильно. Дальше смотрел по счётчикам iptables - пакеты с ноута iptables как будто просто не видит. Пробовал выдавать другим товарищам с локалки провайдера Инет через себя - iptables их пакеты так же игнорирует, хотя критериям они соответствуют. То есть проблема не в ноуте. Смотрел все таблицы iptables - все девственно чисты:

Код:

lilovip:/home/lilovip# iptables -t nat -vnL Chain PREROUTING (policy ACCEPT 74187 packets, 7556K bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 5031 packets, 342K bytes) pkts bytes target prot opt in out source destination 0 0 SNAT all -- * * 192.168.1.5 10.22.0.0/16 to:10.22.117.155 0 0 SNAT all -- * * 192.168.1.5 !10.22.0.0/16 to:79.98.15.175 Chain OUTPUT (policy ACCEPT 5034 packets, 342K bytes) pkts bytes target prot opt in out source destination


так же ACCEPT везде - и в mangle и в filter и в raw.

Пробовал указывать -s и всю сетку 192.168.1.0/24 и просто без -s - чтобы все пакеты удовлетворяли критерию - iptables игнорит.
Всё, больше способов протестить в чём проблема не могу измыслить.
Есть ли какой-то специфичный софт/настройки которые могут сбить iptables с толку? Может есть какие-то способы протестить что не так?
Маны по iptables исчитал вдоль и поперёк - уже третий день с этой проблемой сижу.
Заранее спасибо за помощь.
Спасибо сказали:
Аватара пользователя
sarutobi
Сообщения: 676
Статус: Добрость и скромнота
ОС: Debian 5, FreeBSD 6.2/8.0

Re: iptables - проблема на ровном месте

Сообщение sarutobi »

а что у вас написано в INPUT и OUTPUT ?
еще попробуйте ловить пакеты tcpdump -i <interface> -n - он вешается на интерфейc (до iptables).
Fire and water, earth and sky - mistery surrounds us, legends never die!
Спасибо сказали:
Sleeping Daemon
Сообщения: 1450

Re: iptables - проблема на ровном месте

Сообщение Sleeping Daemon »

lilovip писал(а):
06.12.2008 15:37
Здравствуйте.
Встала максимально тривиальная задача. Есть Desktop под Debian (рабочая домашняя машина) и ноутбук под WinXP (из-за аппаратной неисправности проца Linux там падает). Нужно вывести ноут в Интернет через Десктоп используя NAT. На десктопе сетевые интерфейсы: eth0 - локалка с провайдером 10.22.0.0/16, адрес 10.22.117.155; ppp0 - тунель через локалку провайдера, через который выход в Интернет, адрес 79.98.xxx.yyy, IP белый, прямой; eth1 - локалка с ноутом 192.168.1.0/24, адреса 192.168.1.16 у десктопа и 192.168.1.5 у ноута.
Задача проще некуда: либо так:

Код:

iptables -t nat -A POSTROUTING -s 192.168.1.5 -j MASQUERADE

либо так (адреса хоть и выдаются провайдером по DHCP, но уже год как не менялись):

Код:

iptables -t nat -A POSTROUTING -s 192.168.1.5 -d 10.22.0.0/16 -c 0 0 -j SNAT --to-source 10.22.117.155 iptables -t nat -A POSTROUTING -s 192.168.1.5 -d ! 10.22.0.0/16 -c 0 0 -j SNAT --to-source 79.98.xxx.yyy

На ноуте, понятно, прописываем 192.168.1.16 шлюзом и DNS-ы провайдера.
Поднимаю я такую систему, пингую с ноута хоть провайдерскую локалку, хоть внешние адреса (и по имени, и по адресу) - ответа нет. Пинг до десктопа идёт отлично. На десктопе смотрел tcpdump'ом - пакеты с ноута с ICMP или DNS запросом приходят - с правильными адресами получателя, всё правильно. Дальше смотрел по счётчикам iptables - пакеты с ноута iptables как будто просто не видит. Пробовал выдавать другим товарищам с локалки провайдера Инет через себя - iptables их пакеты так же игнорирует, хотя критериям они соответствуют. То есть проблема не в ноуте. Смотрел все таблицы iptables - все девственно чисты:

Код:

lilovip:/home/lilovip# iptables -t nat -vnL Chain PREROUTING (policy ACCEPT 74187 packets, 7556K bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 5031 packets, 342K bytes) pkts bytes target prot opt in out source destination 0 0 SNAT all -- * * 192.168.1.5 10.22.0.0/16 to:10.22.117.155 0 0 SNAT all -- * * 192.168.1.5 !10.22.0.0/16 to:79.98.15.175 Chain OUTPUT (policy ACCEPT 5034 packets, 342K bytes) pkts bytes target prot opt in out source destination


так же ACCEPT везде - и в mangle и в filter и в raw.

Пробовал указывать -s и всю сетку 192.168.1.0/24 и просто без -s - чтобы все пакеты удовлетворяли критерию - iptables игнорит.
Всё, больше способов протестить в чём проблема не могу измыслить.
Есть ли какой-то специфичный софт/настройки которые могут сбить iptables с толку? Может есть какие-то способы протестить что не так?
Маны по iptables исчитал вдоль и поперёк - уже третий день с этой проблемой сижу.
Заранее спасибо за помощь.

FORWARD в обе стороны для ноута должен быть разрешен.
Спасибо сказали:
lilovip
Сообщения: 13

Re: iptables - проблема на ровном месте

Сообщение lilovip »

FORWARD в обе стороны для ноута должен быть разрешен.


Цепочка FORWARD есть только в таблицах filter и mangle, вот их вывод:

Код:

lilovip:/home/lilovip# iptables -t filter -nvL Chain INPUT (policy ACCEPT 76070 packets, 32M bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 33627 packets, 4785K bytes) pkts bytes target prot opt in out source destination lilovip:/home/lilovip# iptables -t mangle -nvL Chain PREROUTING (policy ACCEPT 150K packets, 36M bytes) pkts bytes target prot opt in out source destination Chain INPUT (policy ACCEPT 76067 packets, 32M bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 33619 packets, 4785K bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 37725 packets, 5070K bytes) pkts bytes target prot opt in out source destination


Как видите, политика везде ACCEPT. Или нужно как-то вручную прописать правило для форвардинга пакетов от ноута?


а что у вас написано в INPUT и OUTPUT ?
еще попробуйте ловить пакеты tcpdump -i <interface> -n - он вешается на интерфейc (до iptables).


В цепочках INPUT и OUTPUT всех таблиц - политика ACCEPT. Или опять же нужно как-то вручную убедить iptables что "действительно ACCEPT"?
tcpdump'ом и отлавливаю, это само собой. Как я уже писал - он говорит, что пакеты от ноута приходят (например echo request), а ответа ему не уходит.

Как ещё можно отловить проблему, господа?
Спасибо сказали:
Аватара пользователя
sarutobi
Сообщения: 676
Статус: Добрость и скромнота
ОС: Debian 5, FreeBSD 6.2/8.0

Re: iptables - проблема на ровном месте

Сообщение sarutobi »

а что говорит tcpdump на внешних интерфейсах <eth0> и <ppp0> и правильно ли уходят пакеты уже отмаскараденные?
Fire and water, earth and sky - mistery surrounds us, legends never die!
Спасибо сказали:
lilovip
Сообщения: 13

Re: iptables - проблема на ровном месте

Сообщение lilovip »

Так в том-то и дело - iptables не считает пакеты, пришедшие с ноута подходящими под критерии для цели MASQUERADE, и поэтому на внешних интерфейсах никакой активности нет. Я и пытаюсь найти способ определить, почему iptables так упорно не хочет маскарадить...
Спасибо сказали:
Аватара пользователя
sarutobi
Сообщения: 676
Статус: Добрость и скромнота
ОС: Debian 5, FreeBSD 6.2/8.0

Re: iptables - проблема на ровном месте

Сообщение sarutobi »

я что то не увидел - вы включали форвардинг?
echo 1 > /proc/sys/net/ipv4/ip_forward
Fire and water, earth and sky - mistery surrounds us, legends never die!
Спасибо сказали:
lilovip
Сообщения: 13

Re: iptables - проблема на ровном месте

Сообщение lilovip »

Ё-моё! Забыл! Форвардинг забыл включить!

Код: Выделить всё

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


Спасибо!
Не напомните как указанное выше не очень красивое действие в конфигурационных файлах сохранить, чтобы после каждого ребута не приходилось включать?
Спасибо сказали:
Аватара пользователя
sarutobi
Сообщения: 676
Статус: Добрость и скромнота
ОС: Debian 5, FreeBSD 6.2/8.0

Re: iptables - проблема на ровном месте

Сообщение sarutobi »

ну это уже смотрите по своей ОС.... у меня в сьюзе это в ясте в настройках сети лежит....
Fire and water, earth and sky - mistery surrounds us, legends never die!
Спасибо сказали:
lilovip
Сообщения: 13

Re: iptables - проблема на ровном месте

Сообщение lilovip »

Логично, сейчас найдём.

Вопрос решён, тема закрыта.
Спасибо сказали: