The OpenNET Project / Index page

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

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

"iptables сломался проброс портов"  +/
Сообщение от zdlr email(ok) on 22-Мрт-15, 16:01 
Друзья выручайте.

Ситуация такая: Поменял материнскую плату на Убунту сервер. Все заработало кроме проброса портов, которые работают как то не так как нужно.

На сервере настроен NAT, на натом стоит сервер с RDP, на него делался проброс портов.

Делалось это так:

sudo iptables -A FORWARD -i eth0 -p tcp --dport 3389 -j ACCEPT
sudo iptables -t nat -A PREROUTING -p tcp -d 123.123.123.123 --dport 3389 -j DNAT --to-destination 192.168.0.100:3389
sudo iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.100 --dport 3389 -j SNAT --to-source 123.123.123.123

Теперь ситуация такая что если из под нат постучаться на внешний адрес 123.123.123.123 и порт 3389 то все работает. А если сделать это снаружи то нет.

Если запустить tcpdump и послушать - то при подключении изнутри пакеты бегают, а при подключении снаружи запрос проиходит и далее во внутрь нет.

14:56:26.793428 IP 46.211.146.228.18598 > 123.123.123.123.3389: Flags [S], seq 1191622352, win 65535, options [mss 1410,nop,wscale 4,nop,nop,TS val 193727049 ecr 0,sackOK,eol], length 0

Подобную тему тут на форуме поднимал пользователь, но решения нет. Но ему написали интересное замечание, какое касается видно и меня.

Ему написали:

"> -A FORWARD -i eth0 -p tcp -m tcp --dport 8000 -j ACCEPT

но в форварде нет разрешающего правила , которое бы разрешало трафик извне на внутренний ip/порт"

У меня такое же правило судя по iptables-save:

# Generated by iptables-save v1.4.21 on Sun Mar 22 15:01:20 2015
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -m state --state NEW -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1234 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2345 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -p udp -m udp --sport 1701 -j ACCEPT
-A FORWARD -i eth0 -p tcp -m tcp --dport 3389 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Sun Mar 22 15:01:20 2015
# Generated by iptables-save v1.4.21 on Sun Mar 22 15:01:20 2015
*mangle
:PREROUTING ACCEPT [1164363:1182988541]
:INPUT ACCEPT [1120962:1154843012]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [568929:549337025]
:POSTROUTING ACCEPT [612457:577497932]
-A FORWARD -j ACCEPT
COMMIT
# Completed on Sun Mar 22 15:01:20 2015
# Generated by iptables-save v1.4.21 on Sun Mar 22 15:01:20 2015
*nat
:PREROUTING ACCEPT [61:7854]
:INPUT ACCEPT [61:7854]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 123.123.123.123/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.100:3389
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -d 192.168.0.100/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source 123.123.123.123
COMMIT
# Completed on Sun Mar 22 15:01:20 2015


Друзья выручайте.

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

Оглавление

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

1. "iptables сломался проброс портов"  +/
Сообщение от PavelR (??) on 22-Мрт-15, 16:35 
sysctl -a |grep forward

?

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

2. "iptables сломался проброс портов"  +/
Сообщение от ALex_hha (ok) on 22-Мрт-15, 17:55 
во всех цепочках дефолтная политика ACCEPT. Какой смысл в разрешающих правилах?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "iptables сломался проброс портов"  +/
Сообщение от zdlr email(ok) on 22-Мрт-15, 17:58 
>> Теперь ситуация такая что если из под нат постучаться на внешний адрес 123.123.123.123 и порт 3389 то все работает.
> из под NAT на внешний адрес? Это как?

Ну как, сижу я на 192.168.0.10, а сервер на 192.168.0.100 - если так на 192.168.0.100 зайти то как бы я считаю изнутри и без всяких пробросов, но если я постучусь 123.123.123.123 то как бы на внешний же адрес пробую зайти и все работает, проброс порта есть. Я даже его отключал чтоб удостовериться что проброс есть или нет в зависимости от того включил я его или нет.

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

4. "iptables сломался проброс портов"  +/
Сообщение от Etch on 22-Мрт-15, 17:58 
> Ситуация такая: Поменял материнскую плату

Проверьте названия сетевых интерфейсов, наверняка они поменялись местами.

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

5. "iptables сломался проброс портов"  +/
Сообщение от zdlr email(ok) on 22-Мрт-15, 18:05 
> sysctl -a |grep forward
> ?

Если честно у меня только что сдали уже нервы и я не стал продолжать эксперименты так как утром нужна рабочая система и поставил старую плату назад. И все заработало.

Смотрите еще какая ситуация.

На старой плате у меня было 3 сетевые карты. Этот сервер на который делался проброс висел на одной из них и небыл доступен из офиса. Только снаружи. А в новой материнской плате только одно гнездо посадочное для сетевой, итого карт стало две. Изначально я сделал виртуальный интерфейс, и все стало визуально как было. На сервере RDP появился интернет, заработал проброс (как потом выяснилось только для меня). Потом я этот виртуальный интерфейс удалил, сервер перевел в туже подсеть, где нашел в настройка iptables поменял все упоминания на новый адрес. И опять же все заработало только для меня.

Сейчас я вернул все назад, чтоб уже не рисковать сегодня. И оно без проблем заработало моментально.

Ответ то что вы просили на данный момент:

net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth1.forwarding = 1
net.ipv4.conf.eth1.mc_forwarding = 0
net.ipv4.conf.eth2.forwarding = 1
net.ipv4.conf.eth2.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.mc_forwarding = 0
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.default.mc_forwarding = 0
net.ipv6.conf.eth0.forwarding = 1
net.ipv6.conf.eth0.mc_forwarding = 0
net.ipv6.conf.eth1.forwarding = 1
net.ipv6.conf.eth1.mc_forwarding = 0
net.ipv6.conf.eth2.forwarding = 1
net.ipv6.conf.eth2.mc_forwarding = 0
net.ipv6.conf.lo.forwarding = 1
net.ipv6.conf.lo.mc_forwarding = 0

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

6. "iptables сломался проброс портов"  +/
Сообщение от zdlr email(ok) on 22-Мрт-15, 18:08 
> во всех цепочках дефолтная политика ACCEPT. Какой смысл в разрешающих правилах?

Если честно я не очень большой специалист по iptables, сам как бы там не лазал никогда, сервер уже работает лет 5. Все что я делал если настраиваил по статьям, и так оно и вышло видимо. Причин не знаю о чем вы говорите.

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

7. "iptables сломался проброс портов"  +/
Сообщение от zdlr email(ok) on 22-Мрт-15, 18:09 
>> Ситуация такая: Поменял материнскую плату
> Проверьте названия сетевых интерфейсов, наверняка они поменялись местами.

Проверял, да, изначально новая карта определась неверно. Но я в  /etc/udev/rules.d/70-persistent-net.rules исправил это. Стало как и было eth0 в мир eth1 внутрь.

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

8. "iptables сломался проброс портов"  +/
Сообщение от aaa (??) on 23-Мрт-15, 14:26 
>[оверквотинг удален]
> :POSTROUTING ACCEPT [0:0]
> -A PREROUTING -d 123.123.123.123/32 -p tcp -m tcp --dport 3389 -j DNAT
> --to-destination 192.168.0.100:3389
> -A POSTROUTING -o eth0 -j MASQUERADE
> -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
> -A POSTROUTING -d 192.168.0.100/32 -p tcp -m tcp --dport 3389 -j SNAT
> --to-source 123.123.123.123
> COMMIT
> # Completed on Sun Mar 22 15:01:20 2015
> Друзья выручайте.

Важен порядок правил у Вас стоит:
-A FORWARD -i eth0 -o eth1 -j REJECT --reject-with icmp-port-unreachable  - отбрасывает все пакеты не попавшие под правила выше.
-A FORWARD -p udp -m udp --sport 1701 -j ACCEPT
-A FORWARD -i eth0 -p tcp -m tcp --dport 3389 -j ACCEPT - до сюда пакеты не доходят
Надо поменять местами. Или написать:
iptables -I FORWARD -i eth0 -p tcp -m tcp --dport 3389 -j ACCEPT

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

9. "iptables сломался проброс портов"  +/
Сообщение от izyk (ok) on 24-Мрт-15, 14:57 
> Друзья выручайте.

Уберите:
sudo iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.100 --dport 3389 -j SNAT --to-source 123.123.123.123

затем настройте правильно маршрутизацию в сети, firewall на Windows который 192.168.0.100, а может и так заработает.
У вас случаем не две сети на одном интерфейсе?

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


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

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




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

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