Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Ошибка в iptables, помогите разобраться.  (Прочитано 861 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн tarya

  • Автор темы
  • Активист
  • *
  • Сообщений: 305
    • Просмотр профиля
Друзья, извиняюсь что заспамил темами, но без вас не разберусь а нужно очень быстро.

Итог истории. Я поменял на Ubuntu сервере материнскую плату, и у меня сломался пробром портов. Когда подключаешься инутри сетки на внешний порт роутера (Ubuntu сервер) то все работает, проброс работат. Но когда это же делаешь извне - нет. Я долго все пересматривал и понять не мог в чем причина.

Решил потестировать все через tcpdump и нашел интересное. Вот пример лога когда я подключаюсь изнутри на внешний адрес роутера.

Цитировать
13:28:19.977060 IP 192.168.0.20.56847 > 123.123.123.123.3389: Flags , seq 2235073167, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 807740098 ecr 0,sackOK,eol], length 0
13:28:19.977129 IP 123.123.123.123.56847 > 192.168.0.100.3389: Flags , seq 2235073167, win 65535, options [mss 1460,nop,wscale 5,nop,nop,TS val 807740098 ecr 0,sackOK,eol], length 0

Вот я зашел с телефона изнутри офиса и видно как происходит запрос "192.168.0.20.56847 > 123.123.123.123.3389" и проброс "123.123.123.123.57398 > 192.168.0.100.3389" и все работает.

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

Цитировать
13:05:58.248851 IP 176.104.51.223.57399 > 123.123.123.123.3389: Flags , seq 3843930517, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 187854485 ecr 0,sackOK,eol], length 0

Где "176.104.51.223" адрес роутера другой сети, с него приходит запрос на 123.123.123.123.3389 и далее проброса во врутнюю сеть не идет.

Друзья помогите разобраться. Спасибо за ваше время.



Пользователь решил продолжить мысль [time]22 Март 2015, 15:47:06[/time]:
Цитировать
tarya@Homeless:~$ sudo iptables -L -n -v -t nat
[sudo] password for tarya:
Chain PREROUTING (policy ACCEPT 24493 packets, 3124K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    4   256 DNAT       tcp  --  *      *       0.0.0.0/0            123.123.123.123       tcp dpt:3389 to:192.168.0.100:3389

Chain INPUT (policy ACCEPT 23933 packets, 3078K bytes)
 pkts bytes target     prot opt in     out     source               destination         

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

Chain POSTROUTING (policy ACCEPT 14 packets, 1760 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1240  112K MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0           
    0     0 MASQUERADE  all  --  *      eth0    192.168.0.0/24       0.0.0.0/0           
    2   128 SNAT       tcp  --  *      *       0.0.0.0/0            192.168.0.100        tcp dpt:3389 to:123.123.123.123

Пользователь решил продолжить мысль 22 Марта 2015, 15:15:48:
На одном форуме пользователь спросил подобную проблему, выложил iptables-save на что ему дали комментарий на одну строку:

Цитировать
> -A FORWARD -i eth0 -p tcp -m tcp --dport 8000 -j ACCEPT

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

У меня такое же есть правило, которое ранее работало "-A FORWARD -i eth0 -p tcp -m tcp --dport 3389 -j ACCEPT" он у меня такой же как у него. Но в теме нет решения проблемы а именно как сделать "но в форварде нет разрешающего правила , которое бы разрешало трафик извне на внутренний ip/порт".

Друзья понимаю что у вас выходной - помогите профорвардить.
« Последнее редактирование: 22 Марта 2015, 15:15:48 от tarya »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: Ошибка в iptables, помогите разобраться.
« Ответ #1 : 22 Марта 2015, 17:21:12 »
Эти 2 правила ещё ладно.. одно переплёвывает другого
Цитировать
1240  112K MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0           
    0     0 MASQUERADE  all  --  *      eth0    192.168.0.0/24       0.0.0.0/0 
Но первое бы я бы как раз исключил.

А это вообще что за правило???
Цитировать
   2   128 SNAT       tcp  --  *      *       0.0.0.0/0            192.168.0.100        tcp dpt:3389 to:123.123.123.123
Убирайте

Покажите все правила
sudo iptables-save
« Последнее редактирование: 22 Марта 2015, 17:23:22 от fisher74 »

Оффлайн tarya

  • Автор темы
  • Активист
  • *
  • Сообщений: 305
    • Просмотр профиля
Re: Ошибка в iptables, помогите разобраться.
« Ответ #2 : 22 Марта 2015, 18:28:40 »
Это правило что вы сказали убрать это форвардинг пакетов такого порта.

Цитировать
# Generated by iptables-save v1.4.21 on Sun Mar 22 17:21:36 2015
*filter
:INPUT ACCEPT [4669:615301]
:FORWARD ACCEPT [59933:68403913]
: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 INPUT -p tcp -m tcp --dport 5061 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5060 -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 17:21:36 2015
# Generated by iptables-save v1.4.21 on Sun Mar 22 17:21:36 2015
*mangle
:PREROUTING ACCEPT [1053741:852815209]
:INPUT ACCEPT [699122:554520021]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [382686:531382067]
:POSTROUTING ACCEPT [736926:829693227]
-A FORWARD -j ACCEPT
COMMIT
# Completed on Sun Mar 22 17:21:36 2015
# Generated by iptables-save v1.4.21 on Sun Mar 22 17:21:36 2015
*nat
:PREROUTING ACCEPT [50415:6300676]
:INPUT ACCEPT [46754:6005375]
:OUTPUT ACCEPT [1149:111424]
:POSTROUTING ACCEPT [86:9341]
-A PREROUTING -d 176.104.51.226/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.100:3389
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/23 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -d 192.168.1.100/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source 176.104.51.226
COMMIT
# Completed on Sun Mar 22 17:21:36 2015

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

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: Ошибка в iptables, помогите разобраться.
« Ответ #3 : 22 Марта 2015, 23:08:40 »
Это правило что вы сказали убрать это форвардинг пакетов такого порта.
Я Вас огорчу. Это не форвард порта, а SourceNAT, что имеет другое назначение. Он не умеет работать с портом, как с объектом управления.
Даже если его в Вашем случае и нужно использовать, то не в таком виде. --to-source долже быть явно другой. Если вообще нужен.

И вообще. у Вас в правилах полный ШВАХ.
Я по ним так и не понял, как интерфейс является внутренним, а какой внешним.
Смотрю в nat - по ним вроде бы как eth0 внешний, так как сплошной маскарадинг на него (правда куча дублирующих, да ещё с разными масками подсетей, что больше намекает на Ваше недопонимание принципов построения сетей)
и в тоже время
-A INPUT -i eth0 -m state --state NEW -j ACCEPTБИНГО.

Оффлайн tarya

  • Автор темы
  • Активист
  • *
  • Сообщений: 305
    • Просмотр профиля
Re: Ошибка в iptables, помогите разобраться.
« Ответ #4 : 23 Марта 2015, 22:50:27 »
Все попробую друзья. Спасибо. Не сегодня конечно.

Оффлайн shushpanchik

  • Активист
  • *
  • Сообщений: 296
    • Просмотр профиля
    • SKSS - "Современные компьютерные сети и системы"
Re: Ошибка в iptables, помогите разобраться.
« Ответ #5 : 25 Марта 2015, 08:25:47 »
А не проще сначала сдеалть немного не по правилам безопастности? INPUT, FORWARD, OUTPUT в ACCEPT, включить маскарадинг (не забыть про echo 1 > /proc/sys/net/ipv4/ip_forward конечно же), форвардинг 3389 и на этом все. Если заработает как надо - дальше разбираться с правилами и постепенно навешивать всё нужное. ИМХО наверняка найдете правило которое не давало Вам покоя.

 

Страница сгенерирована за 0.031 секунд. Запросов: 25.