The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Iptables, переброска порта. "
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"Iptables, переброска порта. "  +/
Сообщение от mpp5 (ok) on 18-Авг-11, 22:14 
Добрый день. Настраиваю у себя небольшую сеть. Как маршрутизатор использую Ubuntu Server 11.04. У него два интерфейса eth1 - внешний (с IP от провайдера) и eth0 для NAT. Суть вопроса пока не в этом, но для полной картины приведу все настройки

/etc/network/interfaces


# The loopback network interface
auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static

    address x.x.x.x
        netmask 255.255.255.240
        gateway x.x.x.x
        dns-nameservers x.x.x.x
    
auto eth0
iface eth0 inet static
        address 192.168.0.1
        network 192.168.0.0
        netmask 255.255.254.0
        broadcast 192.168.1.255
        


Вся настройка NAT делается следующими скриптами:

Очистка от всех правил


#!/bin/bash

echo "Stopping fw..."

/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
/sbin/iptables -t mangle -F
/sbin/iptables -t mangle -X
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P OUTPUT ACCEPT


nat.sh


#! /bin/bash

FWVER=0.1

echo -e "\n\nLoading simple rc.firewall-iptables version $FWVER..\n"
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe

EXTIF="eth1"
INTIF="eth0"

echo "    External Interface $EXTIF"
echo "    Internal Interface $INTIF"


#===================================================================

echo -en "    loading modules: "
echo "  - Verifying that all kernel modules are ok"

$DEPMOD -a
echo "------------------------------------------------------------------------------------------"
echo -en "ip_tables, "
$MODPROBE ip_tables
echo -en "nf_conntrack, "
$MODPROBE nf_conntrack
echo -en "nf_conntrack_ftp, "
$MODPROBE nf_conntrack_ftp
echo -en "nf_conntrack_irc, "
$MODPROBE nf_conntrack_irc
echo -en "iptable_nat, "
$MODPROBE iptable_nat
echo -en "nf_nat_ftp "
$MODPROBE nf_nat_ftp
echo -en "\n------------------------------------------------------------------------------------------"

echo -en " \nDone loading modules.\n"
echo " Enabling forwarding.."
echo "1" > /proc/sys/net/ipv4/ip_forward
echo " Enabling DynamicAddr.."
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo " Clearing any existing rules and setting default policy.."

iptables-restore <<-EOF
*nat
-A POSTROUTING -o "$EXTIF" -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i "$INTIF" -o "$EXTIF" -j ACCEPT
-A FORWARD -j LOG
COMMIT
EOF

echo -e "\nrc.frewall-iptables v$FWVER done.\n"


Все это дело работает на ура + в связке с isc-dhcp + bind9. Вопрос в следующем скрипте. В NAT есть машинка под WinXp куда мне бы хотелось иметь доступ удаленно (RDP). Порт там стандартный 3389. А заходить хочу не через него, а через другой (скажем 6882)

Делаю так

pf.sh


!/bin/bash


EXT_R_IP=x.x.x.x
LOCAL_IP=192.168.1.10
PORT1=6882
PORT2=3389
EXTIF=eth1
INTIF=eth0

echo -ne "External IP $EXT_R_IP\n"
echo -ne "IP to be forwarded to $LOCAL_IP\n"
echo -ne "External port to be knocked at $PORT1\n"
echo -ne "RDP port at $LOCAL_IP is $PORT2\n"
echo -ne "Doing the f**king magic.......\n"
echo -ne "-----------------------------------------------------------\n"

/sbin/iptables -A INPUT -p tcp -i $EXTIF --dport $PORT1 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j DNAT --to-destination $LOCAL_IP:$PORT2
/sbin/iptables -A FORWARD -i $EXTIF -d $LOCAL_IP -p tcp --dport $PORT2 -j ACCEPT

Но ничего не работает. Как не бьюсь, не заходит удаленно. Подскажите, что неверно здесь?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Iptables, переброска порта. "  +/
Сообщение от reader (ok) on 18-Авг-11, 23:16 
>[оверквотинг удален]
> PORT2=3389
> EXTIF=eth1
> INTIF=eth0
> echo -ne "External IP $EXT_R_IP\n"
> echo -ne "IP to be forwarded to $LOCAL_IP\n"
> echo -ne "External port to be knocked at $PORT1\n"
> echo -ne "RDP port at $LOCAL_IP is $PORT2\n"
> echo -ne "Doing the f**king magic.......\n"
> echo -ne "-----------------------------------------------------------\n"
> /sbin/iptables -A INPUT -p tcp -i $EXTIF --dport $PORT1 -j ACCEPT

это лишнее

> /sbin/iptables -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j
> DNAT --to-destination $LOCAL_IP:$PORT2
> /sbin/iptables -A FORWARD -i $EXTIF -d $LOCAL_IP -p tcp --dport $PORT2 -j
> ACCEPT

/sbin/iptables -I FORWARD -i $EXTIF -d $LOCAL_IP -p tcp --dport $PORT2 -j ACCEPT
> Но ничего не работает. Как не бьюсь, не заходит удаленно. Подскажите, что
> неверно здесь?

если соединения нет, смотрим iptables-save -c , запускаем tcpdump на eth0  и смотрим ходят уходят ли пакеты к 192.168.1.10 и есть ли ответы

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Iptables, переброска порта. "  +/
Сообщение от mpp5 (ok) on 18-Авг-11, 23:28 
Благодарю за ответ.

Сейчас я попробую предложенный Вами вариант (/sbin/iptables -I FORWARD -i $EXTIF -d $LOCAL_IP -p tcp --dport $PORT2 -j ACCEPT)

Пока просто добавлю, что суть да дело, сделал tcpdump -i eth1 tcp port 6882 и tcpdump -i eth0 tcp port 3389. Пакеты ходят! Причем как надо, запрос на RDP переправляется на 192.168.1.10 Но резалтов нет =( не подключается. Может ему как-то нужно и обратно выдать ответ?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Iptables, переброска порта. "  +/
Сообщение от mpp5 (ok) on 18-Авг-11, 23:39 
Итак, тоже самое. Делаю запрос по RDP на x.x.x.x:6882. Просматриваю tcpdump eth0. Пакеты доходят до 192.168.1.10:3389, но подключения не происходит. т.е. я подозреваю, что нужно чтобы пакеты теперь шли обратно и из внутренней сети?
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Iptables, переброска порта. "  +/
Сообщение от reader (ok) on 18-Авг-11, 23:49 
> Итак, тоже самое. Делаю запрос по RDP на x.x.x.x:6882. Просматриваю tcpdump eth0.
> Пакеты доходят до 192.168.1.10:3389, но подключения не происходит. т.е. я подозреваю,
> что нужно чтобы пакеты теперь шли обратно и из внутренней сети?

а ответ от 192.168.1.10? если нет сотрите на нем


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Iptables, переброска порта. "  +/
Сообщение от mpp5 (ok) on 18-Авг-11, 23:53 
>> Итак, тоже самое. Делаю запрос по RDP на x.x.x.x:6882. Просматриваю tcpdump eth0.
>> Пакеты доходят до 192.168.1.10:3389, но подключения не происходит. т.е. я подозреваю,
>> что нужно чтобы пакеты теперь шли обратно и из внутренней сети?
> а ответ от 192.168.1.10? если нет сотрите на нем

Я прошу прощения, но чет не пойму: как посмотреть -- отвечает ли 1.10 на запросы? т.е., как писал выше, пакеты на него идут, это ясно. но что потом делает 1.10? как это понять х)

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Iptables, переброска порта. "  +/
Сообщение от mpp5 (ok) on 18-Авг-11, 23:54 
Замемечу, что пока доступ только по ssh. Нужен ли физический доступ к 1.10?


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Iptables, переброска порта. "  +/
Сообщение от reader (ok) on 19-Авг-11, 00:04 
> Замемечу, что пока доступ только по ssh. Нужен ли физический доступ к
> 1.10?

если виндовый брандмауэр не пускает, то скорей всего да

пакет к винде
a.b.c.d.порт > 192.168.1.10.3389
ниже должен быть ответ
192.168.1.10.3389 > a.b.c.d.порт

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Iptables, переброска порта. "  +/
Сообщение от reader (ok) on 19-Авг-11, 00:08 
>> Замемечу, что пока доступ только по ssh. Нужен ли физический доступ к
>> 1.10?
> если виндовый брандмауэр не пускает, то скорей всего да

хотя если там пакеты из вашей подсети разрешены, то можно попробовать сделать SNAT, для этих пакетов

> пакет к винде
> a.b.c.d.порт > 192.168.1.10.3389
> ниже должен быть ответ
> 192.168.1.10.3389 > a.b.c.d.порт

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Iptables, переброска порта. "  +/
Сообщение от mpp5 (ok) on 19-Авг-11, 00:13 
>>> Замемечу, что пока доступ только по ssh. Нужен ли физический доступ к
>>> 1.10?
>> если виндовый брандмауэр не пускает, то скорей всего да
> хотя если там пакеты из вашей подсети разрешены, то можно попробовать сделать
> SNAT, для этих пакетов
>> пакет к винде
>> a.b.c.d.порт > 192.168.1.10.3389
>> ниже должен быть ответ
>> 192.168.1.10.3389 > a.b.c.d.порт

Прошу прощения (видимо поздно и голова уже не варит). Можно подробнее как послать пакет и получить ответ? какой командой.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Iptables, переброска порта. "  +/
Сообщение от reader (ok) on 19-Авг-11, 00:21 
>[оверквотинг удален]
>>>> 1.10?
>>> если виндовый брандмауэр не пускает, то скорей всего да
>> хотя если там пакеты из вашей подсети разрешены, то можно попробовать сделать
>> SNAT, для этих пакетов
>>> пакет к винде
>>> a.b.c.d.порт > 192.168.1.10.3389
>>> ниже должен быть ответ
>>> 192.168.1.10.3389 > a.b.c.d.порт
> Прошу прощения (видимо поздно и голова уже не варит). Можно подробнее как
> послать пакет и получить ответ? какой командой.

когда вы на клиенте указываете установить соединение клиент шлет запрос на установку соединения и ждет ответы, вот вы и должны увидеть пакеты к 192.168.1.10.3389 и от него, если вы видите только пакеты к 192.168.1.10.3389 (a.b.c.d.порт > 192.168.1.10.3389), то значит или пакет не дошел до 192.168.1.10, либо его проигнорировали на 192.168.1.10, либо ответ не дошел до шлюза

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Iptables, переброска порта. "  +/
Сообщение от mpp5 (ok) on 19-Авг-11, 00:26 
> когда вы на клиенте указываете установить соединение клиент шлет запрос на установку
> соединения и ждет ответы, вот вы и должны увидеть пакеты к
> 192.168.1.10.3389 и от него, если вы видите только пакеты к 192.168.1.10.3389
> (a.b.c.d.порт > 192.168.1.10.3389), то значит или пакет не дошел до 192.168.1.10,
> либо его проигнорировали на 192.168.1.10, либо ответ не дошел до шлюза

о! я понял, благодарю. Верно. Пакеты идут только к 1.10:

my_ip > 192.168.1.10:3389

Обратно (как я понимаю my_ip < 192.168.1.10:3389 это выглядело бы так) ответа нету. Т.е. надо полагать, что пакеты рубятся на 1.10 машине файрволом?


Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Iptables, переброска порта. "  +/
Сообщение от mpp5 (ok) on 19-Авг-11, 00:27 
Да, а шлюз (192.168.0.1) нормально пингуется с 1.10. Это проверялось.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Iptables, переброска порта. "  +/
Сообщение от reader (ok) on 19-Авг-11, 00:29 
>> когда вы на клиенте указываете установить соединение клиент шлет запрос на установку
>> соединения и ждет ответы, вот вы и должны увидеть пакеты к
>> 192.168.1.10.3389 и от него, если вы видите только пакеты к 192.168.1.10.3389
>> (a.b.c.d.порт > 192.168.1.10.3389), то значит или пакет не дошел до 192.168.1.10,
>> либо его проигнорировали на 192.168.1.10, либо ответ не дошел до шлюза
> о! я понял, благодарю. Верно. Пакеты идут только к 1.10:
> my_ip > 192.168.1.10:3389
> Обратно (как я понимаю my_ip < 192.168.1.10:3389 это выглядело бы так) ответа

скорей всего 192.168.1.10.3389 > my_ip
> нету. Т.е. надо полагать, что пакеты рубятся на 1.10 машине файрволом?

возможно, пингуется ли 192.168.1.10 с шлюза?

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

14. "Iptables, переброска порта. "  +/
Сообщение от mpp5 (ok) on 19-Авг-11, 00:30 
да, ping 192.168.1.10 сейчас отработал на ура, пинг есть.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "Iptables, переброска порта. "  +/
Сообщение от reader (ok) on 19-Авг-11, 00:42 
> да, ping 192.168.1.10 сейчас отработал на ура, пинг есть.

попробуйте прямо из консоли дать

iptables -t nat -I POSTROUTING -o eth0 -p tcp -d 192.168.1.10 -j SNAT --to-source 192.168.0.1

это заставит 192.168.1.10 думать что обращение из локалки, а не из инета и может пропустит

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "Iptables, переброска порта. "  +/
Сообщение от mpp5 (ok) on 19-Авг-11, 00:52 
>> да, ping 192.168.1.10 сейчас отработал на ура, пинг есть.
> попробуйте прямо из консоли дать
> iptables -t nat -I POSTROUTING -o eth0 -p tcp -d 192.168.1.10 -j
> SNAT --to-source 192.168.0.1
> это заставит 192.168.1.10 думать что обращение из локалки, а не из инета
> и может пропустит

Заработало!!! Большое Вам спасибо. Просто выручили. Как говорится, при возможности с меня ящик пива или кока-колы (что Вам больше по душе). Благодарю!!!

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "Iptables, переброска порта. "  +/
Сообщение от reader (ok) on 19-Авг-11, 00:58 
>>> да, ping 192.168.1.10 сейчас отработал на ура, пинг есть.
>> попробуйте прямо из консоли дать
>> iptables -t nat -I POSTROUTING -o eth0 -p tcp -d 192.168.1.10 -j
>> SNAT --to-source 192.168.0.1
>> это заставит 192.168.1.10 думать что обращение из локалки, а не из инета
>> и может пропустит
> Заработало!!! Большое Вам спасибо. Просто выручили. Как говорится, при возможности с меня
> ящик пива или кока-колы (что Вам больше по душе). Благодарю!!!

тогда проверяйте прописан ли на 192.168.1.10 шлюзом 192.168.0.1 и если да то смотрите firewall и что там еще есть

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру