LINUX.ORG.RU
ФорумAdmin

iptables и роутер d-link


0

0

Вопрос наверное странный, но все же прошу ответить:

Есть шлюз на базе Debian, в нем есть iptables с простейшим набором правил:

# сброс правил iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD #по-умолчанию запрещаем все iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # разрешаем loopback трафик iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # разрешаем SHH iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT # разрешаем web сервер iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT # разрешаем icmp траффик iptables -A INPUT -p icmp -j ACCEPT iptables -A OUTPUT -p icmp -j ACCEPT

если я правильно понял этими правилами я открыл SSH и WEB как из вне так и из локальной сети, проверяем - да все замечательно работает. Названия интерфейсов я сознательно не написал, они тут пока непричем. А теперь собственно вопрос: Локальная сеть работает через роутер, т.е. машина с Debian воткнута в него (eth2) и имеет собственный выход в инет (eth0 или если угодно ppp0), в локальной сети (192.168.0.0/24) есть еще одна машина (win) положим с адресом 192.168.0.172 (с которой, собственно и проверяются на доступность различные сервисы у Debian через локальную сеть). Роутер имеет адрес 192.168.0.1 и собственный выход в инет (2 провайдер статический IP) который раздается в локальную сеть на машину с ОС win. На роутере сделан проброс портов средствами virtual servers (80 и 22 соответственно) на машину с Debian (ее адрес 192.168.0.103). Почему не срабатывают правила, если я пытаюсь подключиться к 192.168.0.3 на любой из портов посредством 2-го провайдера (тот что заходит в роутер)? Отключал iptables подключение проходит без проблем.

:/ От этого месива в глазах рябит.
Покажи вывод iptables -vnL и iptables -t nat -vnL, оформив в блоке [code][/code] в режиме LORCODE, чтобы форматирование не сползало.

nnz ★★★★
()
Ответ на: комментарий от kilolife

Оно счетчиков не показывает. Впрочем, в данной ситуации это не принципиально.

Кстати, есть еще iptables -S :)

nnz ★★★★
()
Ответ на: комментарий от nnz
Chain INPUT (policy DROP 74 packets, 5867 bytes)
 pkts bytes target     prot opt in     out     source               destination 
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0   
  103  8708 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:2201
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
    8   672 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0   

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

Chain OUTPUT (policy DROP 16 packets, 1008 bytes)
 pkts bytes target     prot opt in     out     source               destination 
    0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0   
   86 12316 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:2201
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:80
    8   672 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0   
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

Сейчас копал, немного дальше... вот еще для размышления... pppoe поднимается с динамическим IP соответственно прописывается маршрут по-умолчанию. таблица маршрутизации выглядит так:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
xx.xx.xxx.xxx   *               255.255.255.255 UH    0      0        0 ppp0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth2
default         *               0.0.0.0         U     0      0        0 ppp0
т.е. гейта для сети 192.168.0.0\24 нету. пробывл прописать его руками:
route add -net 192.168.0.0/24 gw 192.168.0.1 dev eth2
результат нулевой. Почему так делал? до некоторого момента, своего инета на Debian машине небыло, и он как и любой другой комп получал инет от роутера (в networks, в разделе описания eth2 интерфейса просто выставлялся gateway), так вот к чему это я... все прекрасно работало... может и не в iptables дело-то?

Amalthea
() автор топика
Ответ на: комментарий от Amalthea

Да, скорее всего дело не в фаерволе, а в маршрутах.
Ты _уверен_, что при выключенном фаерволе все работает?

Да, и еще совет на будущее: старайся всегда использовать stateful-правила. Т.е. в INPUT и в OUTPUT добавь -m state --state ESTABLISHED,RELATED -j ACCEPT. Кстати, после этого все прочие правила из OUTPUT можно выкинуть.

nnz ★★★★
()
Ответ на: комментарий от Amalthea

>route add -net 192.168.0.0/24 gw 192.168.0.1 dev eth2

На самом деле ситуация с этим маршрутом как раз правильная.
Та команда, которую ты написал, нужна на всех хостах этой подести, кроме самого 192.168.0.1. Какой смысл говорить шлюзу, что он сам себе шлюз? Для него эта подсеть как раз и должна быть написана без шлюза.

А вот с другими маршрутами какая-то фигня непонятная. Например, у меня дома интернет идет через два маршрута (на шлюзе):
xx.xx.xx.0/24 dev eth0 proto kernel scope link src xx.xx.xx.xx metric 10
default via xx.xx.xx.1 dev eth0 metric 10
(где xx.xx.xx.xx — мой внешний айпишник, xx.xx.xx.0/24 — подсеть прова, xx.xx.xx.1 — шлюз прова).

В твоем случае этот интерфейс называется ppp0.

nnz ★★★★
()
Ответ на: комментарий от nnz

С первой частью я согласен на 100%, что на шлюзе его прописывать не надо, я его и не прописываю, да и не смогу, т.к. это роутер d-link 704P. Сразу оговорюсь, что этот шлюз с DHCP сервером, который успешно работает и настраивает ту же машину с ОС Win, ситуация с Debian машиной непонятная, т.к. я жестко в описании интерфейса прописал параметры локальной сети (адрес (соответствует жестко привязаному адресу к маку в DHCP сервере роутера), подсеть и бродкаст), но не прописал шлюз. Почему? потому-что если я прописываю шлюз для этой подсети, он почему-то становится default-маршрутом для Debian машины и соответственно на ней не поднимается интернет.

Amalthea
() автор топика
Ответ на: комментарий от Amalthea

очень смутно предполагаю, что пакет, который приходит на роутер d-link (ip 192.168.0.1) перенаправляется на Debian, а дебиан вполне логично полагая, что этот пакет извне, отвечает по интерфейсу ppp0 который для него как раз и является внешним интерфейсом... Незнаю как внятнее еще объяснить... Я новичок в nix системах? Подскажите как можно в моем случае проверить приходит ли вообще пакет к Debian-у? Как записать, все что творится с портом 2201 в log файл и где потом его можно просмотреть?

Amalthea
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.