tcp, с чего начать искать? Я могу связаться с сервером из локальной сети, но получить СБРОС СОЕДИНЕНИЯ от WAN
У меня есть рабочие сайты, работающие под Apache. Они прекрасно доступны из локальной сети.
Я также настроил часть сервера для доступа из глобальной сети. Сначала это сработало (удача новичка, без сомнения), но сейчас ERR_CONNECTION_RESET
последовательно возвращается. Я изучил все возможные пути, даже переустановил Apache, и теперь у меня нет идей.
Переадресация портов правильно настроена и проверена с помощью nmap
, Как локальное, так и удаленное сканирование показывают, что мой порт открыт.
Я дважды проверил мой ufw
Правило и включено ведение журнала для него. Журнал показывает, что пакеты получают [UFW ALLOW]
для локальных и удаленных входящих подключений.
Я запустил захваты Wireshark от клиента. В сценарии удаленного подключения (сбой) происходит обмен только тремя пакетами:
1 0.000000000 [local_IP] [remote_IP] TCP 66 49527→1123 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
2 0.058425000 [remote_IP] [local_IP] TCP 66 1123→49527 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1320 SACK_PERM=1 WS=128
3 0.058504000 [local_IP] [remote_IP] TCP 54 49527→1123 [ACK] Seq=1 Ack=1 Win=16384 Len=0
Существенные отличия заключаются в том, что при успешном подключении из локальной сети второй пакет будет иметь MSS=1460
и третий пакет будет иметь Win=65536
, И при отправке четвертый пакет содержит HTTP GET
команда с моим LAN IP в качестве источника и так далее.
Если я использую tcpdump
на стороне сервера я получаю следующее в проблемном (WAN) сценарии (перерыв вызывается после connection reset
был получен):
$ sudo tcpdump -n -tttt -i eth0 port 1123
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
2015-07-14 06:38:45.291695 IP 92.95.32.112.49361 > 192.168.1.10.1123: Flags [S], seq 3726787794, win 8192, options [mss 1320,nop,wscale 8,nop,nop,sackOK], length 0
2015-07-14 06:38:45.291735 IP 192.168.1.10.1123 > 92.95.32.112.49361: Flags [S.], seq 2812896430, ack 3726787795, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
2015-07-14 06:38:45.351536 IP 92.95.32.112.49361 > 192.168.1.10.1123: Flags [.], ack 1, win 64, length 0
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel
При локальном подключении это выглядит примерно так; обратите внимание на другой размер окна на третьем пакете:
$ sudo tcpdump -n -tttt -i eth0 port 1123
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
2015-07-14 06:41:33.112315 IP 192.168.1.50.49379 > 192.168.1.10.1123: Flags [S], seq 3570261874, win 8192, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
2015-07-14 06:41:33.112357 IP 192.168.1.10.1123 > 192.168.1.50.49379: Flags [S.], seq 3490289174, ack 3570261875, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
2015-07-14 06:41:33.512742 IP 192.168.1.50.49379 > 192.168.1.10.1123: Flags [.], ack 1, win 256, length 0
2015-07-14 06:41:33.514046 IP 192.168.1.50.49379 > 192.168.1.10.1123: Flags [P.], seq 1:433, ack 1, win 256, length 432
2015-07-14 06:41:33.514079 IP 192.168.1.10.1123 > 192.168.1.50.49379: Flags [.], ack 433, win 237, length 0
2015-07-14 06:41:33.554794 IP 192.168.1.10.1123 > 192.168.1.50.49379: Flags [.], seq 1:1461, ack 433, win 237, length 1460
2015-07-14 06:41:33.554818 IP 192.168.1.10.1123 > 192.168.1.50.49379: Flags [P.], seq 1461:2768, ack 433, win 237, length 1307
[...]^C
919 packets captured
919 packets received by filter
0 packets dropped by kernel
Я заметил, что служба, по-видимому, работает только с tcp6
в отличие от моего сервера SSH; может ли это быть причиной? Обновление: видимо, НЕ как Listen 0.0.0.0:1123
в /etc/apache2/ports.conf
сделал силу tcp
, но проблема осталась при подключении со стороны WAN.
$ sudo netstat -plunt | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1510/sshd
tcp6 0 0 :::22 :::* LISTEN 1510/sshd
$ sudo netstat -plunt | grep apache2
tcp6 0 0 :::1123 :::* LISTEN 3290/apache2
Я не смог захватить что-либо в /var/log/apache2
об этих событиях, используя следующее: LogLevel info
, LogLevel debug
а также LogLevel trace8
(и соответствующий сервис перезапустить). Все файлы в папке сохраняют одну и ту же метку даты до и после неудачного подключения во всех случаях.
Я могу ошибаться, но поскольку Apache предоставляет так мало информации, я теперь задаюсь вопросом, может ли это быть связано с проблемой SQL или PHP с внешними ссылками, но на самом деле у меня нет никакого опыта с ними. Рассматриваемый сервис здесь - ownCloud.
Любые идеи о том, как решить эту проблему дальше, и выяснить, что может быть не так?
1 ответ
Прежде всего, проверьте, нормально ли работают порты. Вы можете сделать это инструментом сканирования портов, таким как этот. Если есть проблемы, проверьте ваш ip еще раз, потому что, вероятно, у вас динамический ip и изменение на некоторые периоды, если он в порядке или результаты теста в порядке, вероятно, дома. Установите динамический ip. Из сетевых подключений установите статический ip для себя, как здесь. И вы не позволяете кому-либо получить тот же ip, как вы резервируете этот ip в настройках модема. Зарезервировать ip довольно просто. Найдите настройку dhcp под вашим модемом. Пусть yur modem работает на 192.168.1.1, и вы задаете для себя 192.168.1.2, в этом случае в настройках dhcp введите 192.168.1.3 в качестве начальной точки, если ни одна из этих работ не свяжется с вашим ISP в некоторых странах некоторым портам может быть запрещено открываться, например, я был на Кипре полгода назад, и открытие порта 80 там запрещено.
--ОБНОВИТЬ--
Как я понимаю, как клиент с другого компьютера, вы можете подключиться, но как сервер, когда вы пытаетесь подключиться, не может видеть страницу. Это основная проблема, если вы не используете прокси-маршрутизаторы, которые не могут маршрутизировать запросы, которые выходят из себя в себя, попробуйте использовать веб-прокси в этом случае, возможно, это сработает. Вы не можете ничего с этим поделать, так как вы не можете подключиться к собственной сети без прокси