Перенаправление трафика с маршрутизатором Rasperry Pi

Я использую Rasperry Pi (работает raspbian) в качестве Wi-Fi-маршрутизатора. Он перенаправляет трафик с Ethernet-кабеля (eth0-wire + ppp0 – соединение L2TP, lx2tp, используемый для него) на wlan0 (USB-ключ wi-fi, hostapd, используемый для функциональности AP).

И проблема в том, что некоторые сайты загружаются очень медленно или вообще не загружаются. Возьмем, к примеру, soundcloud .com – команда curl -L soundcloud.com выполняет щелчок на самом маршрутизаторе, но вечно лежит на ноутбуке, подключенном к нему через Wi-Fi. Это должно быть проблема с перенаправлением трафика.

Вот мой / etc / network / interfaces:

 [email protected] ~ $ cat /etc/network/interfaces auto lo iface lo inet loopback iface eth0 inet dhcp iface wlan0 inet static address 192.168.1.1 netmask 255.255.255.0 up iptables-restore < /etc/iptables.ipv4.nat 

И вот правила перенаправления:

 [email protected] ~ $ cat 1.sh sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE sudo iptables -A FORWARD -i ppp0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT sudo sh -c "iptables-save > /etc/iptables.ipv4.nat" 

Что-то не так с этой настройкой?

UPD:

Таблица маршрутов на Pi:

 [email protected] ~ $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default * 0.0.0.0 U 0 0 0 ppp0 10.89.64.0 * 255.255.248.0 U 0 0 0 eth0 85.21.0.0 10.89.64.1 255.255.255.0 UG 0 0 0 eth0 hdns2.corbina.n 10.89.64.1 255.255.255.255 UGH 0 0 0 eth0 192.168.1.0 * 255.255.255.0 U 0 0 0 wlan0 hdns1.corbina.n 10.89.64.1 255.255.255.255 UGH 0 0 0 eth0 

UPD2:

Оказывается, это некоторая проблема с SSL (это от бродячего блока Ubuntu на хосте OSX):

 [email protected]:~$ curl -v -L soundcloud.com/pure_virtual * Hostname was NOT found in DNS cache * Trying 93.184.220.127... * Connected to soundcloud.com (93.184.220.127) port 80 (#0) > GET /pure_virtual HTTP/1.1 > User-Agent: curl/7.38.0 > Host: soundcloud.com > Accept: */* > < HTTP/1.1 302 Found < Date: Sat, 04 Apr 2015 17:38:06 GMT < Location: https://soundcloud.com/pure_virtual * Server am/2 is not blacklisted < Server: am/2 < X-Frame-Options: SAMEORIGIN < Content-Length: 0 < * Connection #0 to host soundcloud.com left intact * Issue another request to this URL: 'https://soundcloud.com/pure_virtual' * Found bundle for host soundcloud.com: 0x7f73d4f2d0b0 * Hostname was NOT found in DNS cache * Trying 93.184.220.127... * Connected to soundcloud.com (93.184.220.127) port 443 (#1) * successfully set certificate verify locations: * CAfile: none CApath: /etc/ssl/certs * SSLv3, TLS handshake, Client hello (1): * Operation timed out after 0 milliseconds with 0 out of 0 bytes received * Closing connection 1 curl: (28) Operation timed out after 0 milliseconds with 0 out of 0 bytes received 

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

Самый прямой способ найти проблему – это взглянуть на то, как трафик течет с помощью Wireshark – программы, которая позволит вам увидеть, как пакеты текут с помощью графического интерфейса.

Сначала возьмите некоторые данные о малине Pi с помощью следующей команды:

sudo tcpdump -n -w part1.pcap not port 22

(Объяснение: Флаг -n останавливает разрешение DNS, так как это нас не волнует. Часть -w part1.pcap будет записывать данные в файл pcap, чтобы позже мы могли отправить его в WireShark. Отфильтруйте SSH-трафик, который нам неинтересен.)

Теперь, когда эта команда запущена, откройте второе SSH-соединение с Raspberry Pi и сделайте curl -L soundcloud.com (и другие связанные команды). Как только вы закончите, вернитесь в первое окно SSH и сделайте «Ctrl + C», чтобы остановить tcpdump. Это создаст файл part1.pcap .

Для раунда 2 сделайте то же самое, но с другим именем файла, например:

sudo tcpdump -n -w part2.pcap not port 22

Теперь перейдите вручную на soundcloud.com на свой компьютер. После завершения загрузки, снова завершите tcpdump с помощью «Ctrl + C».

Наконец, загрузите и установите Wireshark на свой ПК, перенесите 2 файла pcap, а затем используйте Wireshark для их просмотра. Сравнивая два файла, вы должны найти мощный ключ к тому, что происходит.

По-видимому, это проблема фрагментации MTU / пакета, решаемая с помощью этого iptables:

 iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
  • Sshuttle на DD-WRT / OpenWRT Router
  • DNS: имя домена переходит на маршрутизатор в сети, а не на веб-сервер
  • React не перезагружает данные компонента при изменении параметров маршрута или изменении запроса
  • Способы определения, является ли Internet-выход маршрутизатором или интернет-провайдером?
  • Как обмениваться компьютером через беспроводной маршрутизатор в Windows?
  • Режим гостевого Wi-Fi на вторичном маршрутизаторе
  • Как реализовать аутентифицированные маршруты в React Router 4?
  • Беспроводной маршрутизатор, поддерживающий Bonjour между проводными и беспроводными устройствами
  • Домашняя локальная сеть с двумя подсетями: только одна подсеть может видеть другую
  • Как настроить IP-адрес окон 7 и windows xp через беспроводной маршрутизатор для создания сетей?
  • Домашняя сеть с двумя маршрутизаторами и одним Wi-Fi
  • Interesting Posts

    Падение базы данных postgresql через командную строку

    Как добавить сворачивание кода в выходные fragmentы в rmarkdown html-документах

    Тип математических формул в Microsoft Word в стиле LaTeX?

    Android и Facebook разделяют намерения

    Измените class с коэффициента на числовое число столбцов в кадре данных

    Как я могу получить окно активности стиля диалога, чтобы заполнить экран?

    Как я могу создать хранилище ключей из существующих сертификатов (abc.crt) и файлов abc.key?

    Ctrl + 1 и комбинации клавиш Ctrl + 2 не работают

    Автоматическое расширение текстового поля с помощью jQuery

    Есть ли эквивалент VB.NET для параметров C #?

    Android-убийца процесса

    Я внезапно не могу получить доступ к своему собственному серверу в своей локальной сети через внешний IP-адрес WAN

    Вставить и вставить MySQL

    Нужно объединить строки в excel, учитывая три идентификатора без ущерба исходным данным

    Связать несколько фильтров () в Django, это ошибка?

    Давайте будем гением компьютера.