Jump to content
Shion

iptables - не всегда срабатывает правило

Recommended Posts

Решил опробовать способ обхода заглушек провайдера с одного всем известного сайта. Принцип несложный - фильтровать пакеты по наличию в них HTTP строки на переадресацию. Однако четкой инструкции на мой роутер на сайте не было, поэтому попробовал реализовать это с помощью OPKG и Entware отсюда. Включил OPKG через веб-интерфейс, "накатил" Entware, сделал через SSH "opkg update" и "opkg install iptables" и прописал по инструкции такую вот команду.

iptables -t raw -A PREROUTING -p tcp --sport 80 -m string --algo bm --from 50 --to 200 --hex-string "Location: http://%заглушка%/" -j DROP

И вроде работает. Но только вот работает как-то нестабильно. Довольно часто пакеты, которые должны попадать под это правило, всеравно проходят. Адрес в %заглушка% указан верно. Диапазон поиска фразы в пакете подходит (согласно тупому визуальному сравнению в Wireshark).

Как найти виновного с учетом того, что в linux-системах я понимаю мало?

Share this post


Link to post
Share on other sites

Извиняюсь, не уточнил. Для HTTPS там указано другое правило и оно работает на ура:

iptables -t raw -A PREROUTING -p tcp --sport 443 -m u32 --u32 "4=0x00000000&&0x20=0x50140000" -j DROP

Такого же рода есть правило и для HTTP:

iptables -t raw -A PREROUTING -p tcp --sport 80 -m u32 --u32 "0x1E&0xFFFF=0x5010 && 0x60=0x7761726e && 0x64=0x696e672e && 0x68=0x72742e72" -j DROP

Однако оно, и правило что я упоминал выше дают непостоянный результат. Иногда пакет с HTTP-переадресацией (302 FOUND ... Location: http://%заглушка%/) роутером пропускается, иногда - нет. И каким образом можно выяснить причину, я не знаю.

На случай если я что-то недоглядел, пример пакета пропускаемого роутером:

c32d88728609e28979f879b3f8212664.jpeg

Edited by Shion

Share this post


Link to post
Share on other sites

Нашелся добрый человек (kx77), давший объяснение проблеме:

Quote

если те же правила работают на других linux системах, то дело может быть в проприетарных хаках ядра от производителя.
их делают для поддержки аппаратного nat и роутинга. если есть наcтройки отключения hardware nat, акселерации или что-то там еще - отключай

Обновление роутера без пункта "Network accelerator engine" решило проблему и правила теперь стабильно работают. Разработчикам NDMS и Entware есть над чем подумать.

Share this post


Link to post
Share on other sites
3 часа назад, Shion сказал:

Нашелся добрый человек (kx77), давший объяснение проблеме:

Обновление роутера без пункта "Network accelerator engine" решило проблему и правила теперь стабильно работают. Разработчикам NDMS и Entware есть над чем подумать.

А, ну да.

С ppe hardware и ppe software подобные вещи несовместамы априори.

Я думал это всем известно, и это никто не собирается чинить.

Хотите "ванильный" netfilter - отключайте ppe software и ppe hardware.

  • Thanks 1

Share this post


Link to post
Share on other sites
On 15/09/2016 at 6:45 PM, Le ecureuil said:

Хотите "ванильный" netfilter - отключайте ppe software и ppe hardware.

А поподробнее можно, куда именно нужно в Giga II ткнуть, чтобы все это повыключать? А то снова правило то работает то не работает. Ну на самом деле я даже не понимаю работало ли оно до этого. Знаю только, что раньше, примерно 2 обновления NDMS назад, блоченные РКН сайты по HTTPS открывались стабильно с вышеуказанными правилами. А теперь почему-то перестали. Учитывая, что я с роутером ничего кроме этих обновлений не делал, либо система блокировки у провайдера поменялась (что никто из знакомых не подтвердил), либо разработчики прошивки роутера опять что-то накосячили. Пункт Network accelerator engine в обновлении естественно не отмечен.

Share this post


Link to post
Share on other sites
7 часов назад, Shion сказал:

А поподробнее можно, куда именно нужно в Giga II ткнуть, чтобы все это повыключать? А то снова правило то работает то не работает. Ну на самом деле я даже не понимаю работало ли оно до этого. Знаю только, что раньше, примерно 2 обновления NDMS назад, блоченные РКН сайты по HTTPS открывались стабильно с вышеуказанными правилами. А теперь почему-то перестали. Учитывая, что я с роутером ничего кроме этих обновлений не делал, либо система блокировки у провайдера поменялась (что никто из знакомых не подтвердил), либо разработчики прошивки роутера опять что-то накосячили. Пункт Network accelerator engine в обновлении естественно не отмечен.

Четыре простые команды

> system set net.ipv4.netfilter.ip_conntrack_fastnat 0

> no ppe software

> no ppe hardware

> system configuration save

Share this post


Link to post
Share on other sites

Не сразу понял, что речь идет о CLI. Результат команд ниже:

(config)> system set net.ipv4.netfilter.ip_conntrack_fastnat 0
FileSystem::Proc: System setting saved.
(config)> no ppe software
Command::Base error[7405600]: no such command: ppe.
(config)> no ppe hardware
Command::Base error[7405600]: no such command: ppe.
(config)> system configuration save
Core::ConfigurationSaver: Saving configuration...

Я так понимаю команда ppe не сработала, поскольку не установлен "Network accelerator engine"?

Нужна ли перезагрузка? И достаточно ли будет написать "system set net.ipv4.netfilter.ip_conntrack_fastnat 1" и "system configuration save", чтобы вернуть все обратно?

Share this post


Link to post
Share on other sites
56 минут назад, Shion сказал:

Не сразу понял, что речь идет о CLI. Результат команд ниже:

 


(config)> system set net.ipv4.netfilter.ip_conntrack_fastnat 0
FileSystem::Proc: System setting saved.
(config)> no ppe software
Command::Base error[7405600]: no such command: ppe.
(config)> no ppe hardware
Command::Base error[7405600]: no such command: ppe.
(config)> system configuration save
Core::ConfigurationSaver: Saving configuration...

 

Я так понимаю команда ppe не сработала, поскольку не установлен "Network accelerator engine"?

Нужна ли перезагрузка? И достаточно ли будет написать "system set net.ipv4.netfilter.ip_conntrack_fastnat 1" и "system configuration save", чтобы вернуть все обратно?

Перезагрузка не нужна, для отмены можете набрать
> no system set net.ipv4.netfilter.ip_conntrack_fastnat

или то, что предложили вы.

Share this post


Link to post
Share on other sites

Здравствуйте!

У меня при установке system set net.ipv4.netfilter.ip_conntrack_fastnat 0, в некоторых случаях значительно выростала загрузка процессора. Загрузку давал процесс ksoftirqd/0.

Мне помогло такое решение.

1) Все ускорители вернул назад:

> system set net.ipv4.netfilter.ip_conntrack_fastnat 1

>  ppe software

>  ppe hardware

2)  При этом одно из правил работает без проблем (о чем писалось выше):

> iptables -t mangle -A PREROUTING -p tcp --sport 443 --tcp-flags RST RST -j DROP

3) В дополнение ко второму правилу, которое срабатывает через раз при включенных ускорителях:

> iptables -t mangle -A PREROUTING -p tcp --sport 80 -m string --string "Location: http://%заглушка%" --algo bm -j DROP

для внешнего интерфейса добавил правило в access-list через telnet:

> access-list _WEBADMIN_PPPoE0

>                deny tcp %IP-адрес заглушки% 255.255.255.255 0.0.0.0 0.0.0.0

В итоге получил корректный обход блокировок http и https сайтов без отключения сетевых ускорителей Keenetic-а.

Модель роутера - Keenetic KN-1010 (новая GIGA). Прошивка - 2.10.C.2.0-0.

Возможно, кому-то тоже будет полезна данная информация.

Edited by DarkDiver

Share this post


Link to post
Share on other sites

ksoftirqd - kernel soft irq demon

Как говорится через раз/два но срабатывает ведь.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...