The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
iptables сломался проброс портов, !*! zdlr, 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


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

  • iptables сломался проброс портов, !*! PavelR, 16:35 , 22-Мрт-15 (1)
    • iptables сломался проброс портов, !*! zdlr, 18:05 , 22-Мрт-15 (5)
      > 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

  • iptables сломался проброс портов, !*! ALex_hha, 17:55 , 22-Мрт-15 (2)
    во всех цепочках дефолтная политика ACCEPT. Какой смысл в разрешающих правилах?
    • iptables сломался проброс портов, !*! zdlr, 17:58 , 22-Мрт-15 (3)
      >> Теперь ситуация такая что если из под нат постучаться на внешний адрес 123.123.123.123 и порт 3389 то все работает.
      > из под NAT на внешний адрес? Это как?

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

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

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

  • iptables сломался проброс портов, !*! Etch, 17:58 , 22-Мрт-15 (4)
    > Ситуация такая: Поменял материнскую плату

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

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

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

  • iptables сломался проброс портов, !*! aaa, 14:26 , 23-Мрт-15 (8)
    >[оверквотинг удален]
    > :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

  • iptables сломался проброс портов, !*! izyk, 14:57 , 24-Мрт-15 (9)
    > Друзья выручайте.

    Уберите:
    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, а может и так заработает.
    У вас случаем не две сети на одном интерфейсе?




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

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