LINUX.ORG.RU

МТС и его ДНС

 , , ,


0

1

Второго дня приехал в отпуск на дачу с уверенностью, что буду без проблем пользоваться мобильным интернетом от МТС (опция БИТ), но не тут-то было. Обнаружились дикие тормоза при обращении к DNS.

tcpdump показал, что МТСовские сервера имён часто отвечают друг за дружку. Например при попытке пинговать ЛОР, я вижу:

12:15:41.682243 IP 172.24.35.31.33230 > 217.66.145.1.53: 32676+ A? linux.org.ru. (30)
12:15:42.560503 IP 217.66.145.2.53 > 172.24.35.31.33230: 32676 1/3/0 A 217.76.32.61 (116)
12:15:42.560544 IP 172.24.35.31 > 217.66.145.2: ICMP 172.24.35.31 udp port 33230 unreachable, length 152
12:15:46.682544 IP 172.24.35.31.45651 > 217.66.145.2.53: 32676+ A? linux.org.ru. (30)
12:15:46.684220 IP 172.24.35.31.34809 > 217.66.145.1.53: 28245+ A? linux.org.ru. (30)
12:15:47.598504 IP 217.66.145.1.53 > 172.24.35.31.45651: 32676 1/2/2 A 217.76.32.61 (126)
12:15:47.598547 IP 172.24.35.31 > 217.66.145.1: ICMP 172.24.35.31 udp port 45651 unreachable, length 162

Это выглядит так, что мы спросили 217.66.145.1, нам ответил 217.66.145.2, а мы его послали, т.к. ждём ответа от 217.66.145.1.

Ступор случается, видимо, до тех пор, пока не ответит тот сервер, которого спросили. (При каких обстоятельствах это случается выяснить не удаётся.)

Более того, если попросить неМТСовский сервер имён помочь нам, случается страшное.

vs@trixter$ dig @8.8.8.8 linux.org.ru
;; reply from unexpected source: 217.66.145.2#53, expected 8.8.8.8#53
;; reply from unexpected source: 217.66.145.2#53, expected 8.8.8.8#53

; <<>> DiG 9.4.2 <<>> @8.8.8.8 linux.org.ru
; (1 server found)
;; global options:  printcmd
;; connection timed out; no servers could be reached

Tcpdump:

12:13:39.058508 IP 172.24.35.31.44733 > 8.8.8.8.53: 3548+ A? linux.org.ru. (30)
12:13:44.058557 IP 172.24.35.31.44733 > 8.8.8.8.53: 3548+ A? linux.org.ru. (30)
12:13:47.850503 IP 217.66.145.2.53 > 172.24.35.31.44733: 3548 1/2/2 A 217.76.32.61 (126)
12:13:49.059541 IP 172.24.35.31.44733 > 8.8.8.8.53: 3548+ A? linux.org.ru. (30)
12:13:52.019505 IP 217.66.145.2.53 > 172.24.35.31.44733: 3548 1/2/2 A 217.76.32.61 (126)
12:13:54.103505 IP 217.66.145.2.53 > 172.24.35.31.44733: 3548 1/2/2 A 217.76.32.61 (126)
12:13:54.103568 IP 172.24.35.31 > 217.66.145.2: ICMP 172.24.35.31 udp port 44733 unreachable, length 162

Т.е. МТС перехватил запросы к «чужим» серверам и стал сам на них отвечать от своего имени.

Сталкивался ли кто-то с подобным, и есть ли идеи, как это лечить?

Как легко предположить, nameserver 8.8.8.8 в /etc/resolv.conf не помогает, options timeout:n тоже не об этом.

Первое что приходит на ум, это оставить в /etc/resolv.conf только один namesever и попробовать обмануть локальный ресолвер, подменяя адрес второго МТСного сервера имён на адрес оставленного при помощи iptables. Но это очень коряво, да и iptables у меня на ноуте не используются. Может есть какая-то секретная настройка, позволяющая дефолтовому ресолверу принимать ответы от любого сервера из /etc/resolv.conf, не взирая на то, какому он отправил запрос?

Некоторые детали:

  • Подключение происходит через сотовый телефон по Bluetooth.
  • С соединением всё в порядке, кроме ДНС.
  • Все сетевые настройки получаются по DHCP:
    vs@trixter$ cat /etc/resolv.conf
    # Generated by dhcpcd from ppp0
    # /etc/resolv.conf.head can replace this line
    nameserver 217.66.145.1
    nameserver 217.66.145.2
    # /etc/resolv.conf.tail can replace this line
    vs@trixter$ ifconfig ppp0
    ppp0      Link encap:Point-to-Point Protocol
              inet addr:172.24.35.31  P-t-P:10.64.64.64  Mask:255.255.255.255
              UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
              RX packets:3396 errors:0 dropped:0 overruns:0 frame:0
              TX packets:4360 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:3
              RX bytes:2196162 (2.0 Mb)  TX bytes:797231 (778.5 Kb)
    
  • Ещё немного цирка
    vs@trixter$ dig linux.org.ru
    ;; reply from unexpected source: 217.66.145.2#53, expected 217.66.145.1#53
    ;; reply from unexpected source: 217.66.145.1#53, expected 217.66.145.2#53
    ;; reply from unexpected source: 217.66.145.2#53, expected 217.66.145.1#53
    ;; reply from unexpected source: 217.66.145.1#53, expected 217.66.145.2#53
    
    ; <<>> DiG 9.4.2 <<>> linux.org.ru
    ;; global options:  printcmd
    ;; connection timed out; no servers could be reached
    

    Tcpdump:

    12:08:20.026339 IP 172.24.35.31.54129 > 217.66.145.1.53: 53999+ A? linux.org.ru. (30)
    12:08:21.026602 IP 172.24.35.31.59808 > 217.66.145.2.53: 53999+ A? linux.org.ru. (30)
    12:08:21.207500 IP 217.66.145.1.53 > 172.24.35.31.54129: 53999 1/2/2 A 217.76.32.61 (126)
    12:08:21.406503 IP 217.66.145.1.53 > 172.24.35.31.59808: 53999 1/2/2 A 217.76.32.61 (126)
    12:08:21.406545 IP 172.24.35.31 > 217.66.145.1: ICMP 172.24.35.31 udp port 59808 unreachable, length 162
    

звонить в тех. поддержку МТС не пробовали?

warmate
()

у меня с nameserver 8.8.8.8 в resolv.conf.head работает нормально вроде инет. правда у меня нет там

nameserver 217.66.145.1
nameserver 217.66.145.2
только nameserver 8.8.8.8.

у меня МТС с опцией «супербит».

xmikex ★★★★
()

1. Для начала можешь поставить 217.66.145.2 в качестве основного. Возможно, если запрашивать у него, то и ответ придет с его IP.

2. Другой вариант. Поставь локально named и сделай, чтобы он делал запросы только по tcp. Для начала можно проверить работу запросов по tcp:

host -T -h 217.66.145.2 linux.org.ru

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

1. Раздел «Ещё немного цирка» исходного сообщения уже опровергает это предположение :-) Но вот ещё немного:

vs@trixter$ host linux.org.ru 217.66.145.1
;; reply from unexpected source: 217.66.145.2#53, expected 217.66.145.1#53
;; reply from unexpected source: 217.66.145.2#53, expected 217.66.145.1#53
;; connection timed out; no servers could be reached
vs@trixter$ host linux.org.ru 217.66.145.2
Using domain server:
Name: 217.66.145.2
Address: 217.66.145.2#53
Aliases: 

linux.org.ru has address 217.76.32.61
linux.org.ru mail is handled by 2 mx.linux.org.ru.
vs@trixter$ host linux.org.ru 217.66.145.2
;; reply from unexpected source: 217.66.145.1#53, expected 217.66.145.2#53
;; reply from unexpected source: 217.66.145.1#53, expected 217.66.145.2#53
;; connection timed out; no servers could be reached
vs@trixter$ host linux.org.ru 8.8.8.8
;; reply from unexpected source: 217.66.145.2#53, expected 8.8.8.8#53
;; reply from unexpected source: 217.66.145.2#53, expected 8.8.8.8#53
;; connection timed out; no servers could be reached

У них там, видимо, свой внутренний раунд-робин.

2. По TCP работает и даже к «чужим» пускают.

vs@trixter$ host -T linux.org.ru 217.66.145.2
Using domain server:
Name: 217.66.145.2
Address: 217.66.145.2#53
Aliases: 

linux.org.ru has address 217.76.32.61
linux.org.ru mail is handled by 2 mx.linux.org.ru.
vs@trixter$ host -T linux.org.ru 217.66.145.2
Using domain server:
Name: 217.66.145.2
Address: 217.66.145.2#53
Aliases: 

linux.org.ru has address 217.76.32.61
linux.org.ru mail is handled by 2 mx.linux.org.ru.
vs@trixter$ host -T linux.org.ru 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases: 

linux.org.ru has address 217.76.32.61
linux.org.ru mail is handled by 2 mx.linux.org.ru.

Пока проблему решил, поставив dnsmasq — он хоть по TCP и не умеет, но зато как-то спокойнее интерпретирует дурные ответы от МТС (что бросает подозрение на мой ресолвер), ну и кэширует их, понятно.

unterwulf
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.