LINUX.ORG.RU
ФорумAdmin

Периодические проблемы TCP соединения на IP роутера изнутри локальной сети

 , ,


0

2

Есть роутер на mips с Linux прошивкой

# uname -a
Linux MI-3 3.4.113 #1 Sat Sep 23 20:08:45 MSK 2017 mips GNU/Linux

Роутер имеет IP 192.168.1.1. Я добавил на интерфейс ещё несколько IP:

ip address add "192.168.1.2/24 dev br0
ip address add "192.168.1.3/24 dev br0
ip address add "192.168.1.4/24 dev br0
...

на каждый из этих IP забиндил nginx на определённом порту.

И вот теперь при попытке соединения на эти ip и порт nginx с устройства внутри сети то по одному IP, то по другому происходит либо ошибка соединения по таймауту, либо через n секунд соединение всё же происходит (на другие соединяется мгновенно). При этом во время затупа не получается соединиться на любой прослушиваемый порт на этом IP, а на те которые не слушаются получаю мгновенный connection refused. Сам nginx не при делах, т.к. если заменить его на простейший скрипт висящий на порту, то ничего не меняется, соединение до скрипта не доходит. Во время всего этого ip-шник нормально пингуется. Помимо этого во время когда одно устройство из сети не может соединиться с этим IP другое успешно соединяется. Спустя пару минут IP вновь становится доступен с устройства, с которого только что не получалось соединиться.

Выглядит так буд-то сам роутер блокирует соединения по IP на каком-то рандоме. Но никаких настроек iptables я не делал. Так выглядит выхлоп iptables на роутере сейчас:

# iptables -L -v -n 
Chain INPUT (policy ACCEPT 126K packets, 19M bytes)
 pkts bytes target     prot opt in     out     source               destination         
 560K  190M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT 44087 packets, 15M bytes)
 pkts bytes target     prot opt in     out     source               destination         
1392K  545M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT 1056K packets, 278M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain bfplimit (0 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain logdrop (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            state INVALID,NEW LOG flags 6 level 4 prefix "DROP "
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain upnp (0 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain vpnlist (0 references)
 pkts bytes target     prot opt in     out     source               destination

Так выглядит это в wireshark, когда достучаться до 192.168.1.2 так и не вышло: https://pasteboard.co/YNZOWqAgRmCP.png

И да, все попытки соединения происходят по Wi-Fi.

Что это может быть и как попытаться исправить?

★★★

Последнее исправление: Olegymous (всего исправлений: 3)

Нет ли в сети хостов с адресами который ты добавил? Если нет, то начни с самого начала:

arping до всех 3-х адресов сначала черз lan, а потом через wifi.

Дальше тоже самое с ping.

Проблема выглядит странно. Как выглядит на роутере «ip a» и «ip ro» ?

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

В сеть все подключаются через этот роутер с выдачей IP по DHCP, в котором назначено выдавать адреса начиная с 192.168.1.60. Так что хостов с такими IP нет. Ну и в его админке видно, что всё подключенное имеет адрес больше 100 на конце.

arping и ping все пингует, в т.ч. во время затупа, пока пробовал только через wi-fi:

sudo arping 192.168.1.2
ARPING 192.168.1.2
42 bytes from 28:6c:07:5d:75:95 (192.168.1.2): index=0 time=1.202 msec
42 bytes from 28:6c:07:5d:75:95 (192.168.1.2): index=1 time=642.168 usec
42 bytes from 28:6c:07:5d:75:95 (192.168.1.2): index=2 time=9.184 msec
...

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

ip ro на роутере

default via 10.105.14.62 dev eth2.2  metric 1 
10.105.14.32/27 dev eth2.2  proto kernel  scope link  src 10.105.14.42 
127.0.0.0/8 dev lo  scope link 
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1

ip a на роутере

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 28:6c:07:5d:75:95 brd ff:ff:ff:ff:ff:ff
3: sit0: <NOARP> mtu 1480 qdisc noop state DOWN 
    link/sit 0.0.0.0 brd 0.0.0.0
4: ra0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN qlen 1000
    link/ether 28:6c:07:5d:75:96 brd ff:ff:ff:ff:ff:ff
5: rai0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN qlen 1000
    link/ether 28:6c:07:5d:75:97 brd ff:ff:ff:ff:ff:ff
6: eth2.1@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP 
    link/ether 28:6c:07:5d:75:95 brd ff:ff:ff:ff:ff:ff
7: eth2.2@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 28:6c:07:5d:75:97 brd ff:ff:ff:ff:ff:ff
    inet 10.105.14.42/27 brd 10.105.14.63 scope global eth2.2
8: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 28:6c:07:5d:75:95 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global br0
    inet 192.168.1.2/24 scope global secondary br0
    inet 192.168.1.3/24 scope global secondary br0
    inet 192.168.1.4/24 scope global secondary br0
    inet 192.168.1.5/24 scope global secondary br0
    inet 192.168.1.6/24 scope global secondary br0
    inet 192.168.1.7/24 scope global secondary br0
    inet 192.168.1.8/24 scope global secondary br0
    inet 192.168.1.9/24 scope global secondary br0
    inet 192.168.1.10/24 scope global secondary br0
    inet 192.168.1.11/24 scope global secondary br0
    inet 192.168.1.12/24 scope global secondary br0
    inet 192.168.1.13/24 scope global secondary br0
    inet 192.168.1.14/24 scope global secondary br0
    inet 192.168.1.15/24 scope global secondary br0
    inet 192.168.1.16/24 scope global secondary br0
    inet 192.168.1.17/24 scope global secondary br0
    inet 192.168.1.18/24 scope global secondary br0
    inet 192.168.1.19/24 scope global secondary br0
    inet 192.168.1.20/24 scope global secondary br0
    inet 192.168.1.21/24 scope global secondary br0
    inet 192.168.1.22/24 scope global secondary br0
    inet 192.168.1.23/24 scope global secondary br0
    inet 192.168.1.24/24 scope global secondary br0
    inet 192.168.1.25/24 scope global secondary br0
    inet 192.168.1.26/24 scope global secondary br0
    inet 192.168.1.27/24 scope global secondary br0
    inet 192.168.1.28/24 scope global secondary br0
    inet 192.168.1.29/24 scope global secondary br0
    inet 192.168.1.30/24 scope global secondary br0
    inet 192.168.1.31/24 scope global secondary br0
    inet 192.168.1.32/24 scope global secondary br0
    inet 192.168.1.33/24 scope global secondary br0
    inet 192.168.1.34/24 scope global secondary br0
    inet 192.168.1.35/24 scope global secondary br0
    inet 192.168.1.36/24 scope global secondary br0
    inet 192.168.1.37/24 scope global secondary br0
    inet 192.168.1.38/24 scope global secondary br0
    inet 192.168.1.39/24 scope global secondary br0
    inet 192.168.1.40/24 scope global secondary br0
    inet 192.168.1.41/24 scope global secondary br0
    inet 192.168.1.42/24 scope global secondary br0
    inet 192.168.1.43/24 scope global secondary br0
    inet 192.168.1.44/24 scope global secondary br0
    inet 192.168.1.45/24 scope global secondary br0
    inet 192.168.1.46/24 scope global secondary br0
    inet 192.168.1.47/24 scope global secondary br0
    inet 192.168.1.48/24 scope global secondary br0
    inet 192.168.1.49/24 scope global secondary br0
    inet 192.168.1.50/24 scope global secondary br0
    inet 192.168.1.51/24 scope global secondary br0
    inet 192.168.1.52/24 scope global secondary br0
    inet 192.168.1.53/24 scope global secondary br0
    inet 192.168.1.54/24 scope global secondary br0
    inet 192.168.1.55/24 scope global secondary br0
    inet 192.168.1.56/24 scope global secondary br0
    inet 192.168.1.57/24 scope global secondary br0
    inet 192.168.1.58/24 scope global secondary br0
    inet 192.168.1.59/24 scope global secondary br0
9: ra1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 2a:6c:07:5c:75:96 brd ff:ff:ff:ff:ff:ff
10: wds0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 28:6c:07:5d:75:96 brd ff:ff:ff:ff:ff:ff
11: wds1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 28:6c:07:5d:75:96 brd ff:ff:ff:ff:ff:ff
12: wds2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 28:6c:07:5d:75:96 brd ff:ff:ff:ff:ff:ff
13: wds3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 28:6c:07:5d:75:96 brd ff:ff:ff:ff:ff:ff
14: apcli0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 2a:6c:07:5d:75:96 brd ff:ff:ff:ff:ff:ff
15: rai1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 2a:6c:07:5c:75:97 brd ff:ff:ff:ff:ff:ff
16: wdsi0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 28:6c:07:5d:75:97 brd ff:ff:ff:ff:ff:ff
17: wdsi1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 28:6c:07:5d:75:97 brd ff:ff:ff:ff:ff:ff
18: wdsi2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 28:6c:07:5d:75:97 brd ff:ff:ff:ff:ff:ff
19: wdsi3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 28:6c:07:5d:75:97 brd ff:ff:ff:ff:ff:ff
20: apclii0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 2a:6c:07:5d:75:97 brd ff:ff:ff:ff:ff:ff
Olegymous ★★★
() автор топика
Ответ на: комментарий от Olegymous

Сейчас ещё провёл эксперимент. Во время неконнекта к одному из IP отключил wi-fi и подключился к роутеру по проводу. Ничего не поменялось, на ip по-прежнему коннектиться не хочет.

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

Сейчас ещё пробую с компа под windows и как будто бы проблем не наблюдается вообще (хотя может быть только пока). Всё время до этого это был ноут под Linux и смартфон на android и вот там проблема явно проявляется с разной периодичностью. Я всё больше склоняюсь к тому, что проблема на клиентской стороне, ну или какая-то совокупная.

netstat -ltnpe на роутере: http://paste.org.ru/?ikygc7

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

Еще нашел интересное в wireshark

Во время затупа идёт несколько TCP Retransmision, потом ARP запрос на выяснение принадлежности адреса, к которому я пытаюсь коннектиться (на это время попытка коннекта висит уже несколько секунд) и уже на следующую TCP Retransmision после ARP запроса коннект таки проходит. В картинке: https://i2.paste.pics/52c4c8fcb91838b7a7431acb320f4c1a.png

Olegymous ★★★
() автор топика
Последнее исправление: Olegymous (всего исправлений: 4)

Можете еще посмотреть очередь неполностью установленных соединений.

Possible SYN flooding on port 53

То есть по юдп ответ не был получен, и резольвер перешел на тцп. Скорее всего сервер посылает ответ (ACK), но он не доходит до клиента. А почему? Видимо проблема не в нгинксе.

level1 ★★
()
Последнее исправление: level1 (всего исправлений: 1)
Ответ на: комментарий от level1

Думаю SYN flooding с моей проблемой не связан.

Я наконец догадался запустить tcpdump на роутере. И увидел там те же попытки SYN и его Retransmission от клиента. А попыток ответа от роутера нет. Только на N-ый Retransmission он наконец отвечает.

Теория с ответом после ARP не подтвердилась. Был запечатлен случай, когда после ARP было ещё штуки 4 Retransmission до ответа.

А вот то, что проблема с виндового компа в качестве клиента не наблюдается вообще, подтвердилось. Там и коннект мгновенный и никаких TCP Retransmission-ов в wireshark нет.

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

Проблема какая-то глупая. Пингани клиента с роутера. Пингани клиента с винды. Пингани винду с клиента. Пингани роутер с клиента. Воткни в клиента патчкорд от винды. Поменяй сетевуху на клиенте. Проверь внимательно сетевые настройки на клиенте. Убери дхцп.

level1 ★★
()