Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: MASQUERADING and Plex несовместимость...  (Прочитано 852 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн popovis

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
MASQUERADING and Plex несовместимость...
« : 27 Ноября 2017, 06:52:28 »
Здравствуйте форумчане,
Помогите решить делему:
Настраиваю я iptables так:
iptables -F INPUT
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i ens1 -j ACCEPT
iptables -A OUTPUT -o ens1 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p TCP --sport 32768:60999 -j ACCEPT
iptables -A OUTPUT -p UDP --sport 32768:60999 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i enp1s0 -p TCP --dport 22 -j ACCEPT
iptables -A OUTPUT -o enp1s0 -p TCP --sport 22 -j ACCEPT
iptables -A INPUT -i enp1s0 -p TCP --dport 32400 -j ACCEPT
iptables -A OUTPUT -o enp1s0 -p TCP --sport 32400 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -i ens1 -j ACCEPT
iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
где enp1s0 - внешний интерфейс,а ens1 внутренний.
после этого пакеты с localhost (Plex) начинают маскарадиться и до клиента не долетают.
Консоль iptables-save выдаёт такие строки:
# Generated by iptables-save v1.6.0 on Sun Nov 26 20:57:57 2017
*filter
:INPUT ACCEPT [46:2902]
:FORWARD ACCEPT [51:3072]
:OUTPUT ACCEPT [49:3190]
:DOCKER - [0:0]
:DOCKER-ISOLATION - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -i ens1 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o ens1 -j ACCEPT
-A DOCKER-ISOLATION -j RETURN
COMMIT
# Completed on Sun Nov 26 20:57:57 2017
# Generated by iptables-save v1.6.0 on Sun Nov 26 20:57:57 2017
*nat
:PREROUTING ACCEPT [158:13129]
:INPUT ACCEPT [56:3937]
:OUTPUT ACCEPT [158:13068]
:POSTROUTING ACCEPT [0:0]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
COMMIT
# Completed on Sun Nov 26 20:57:57 2017
Если же я оставляю в скрипте всё, кроме строки nat-MASQUERADE-FORWARD:
iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
то Plex работает, но не работает NAT.
Помогите настроить маршрутизацию.
« Последнее редактирование: 28 Ноября 2017, 16:00:17 от popovis »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: "NAT" && "MASQUERADING" && "Plex" несовместимость...
« Ответ #1 : 27 Ноября 2017, 07:41:12 »
man iptables-save
man iptables-restore

Мы вам тут не онлайн-интерпретаторы скриптов.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн popovis

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: "NAT" && "MASQUERADING" && "Plex" несовместимость...
« Ответ #2 : 27 Ноября 2017, 10:12:50 »
Сейчас настроил так:
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i ens1 -j ACCEPT
iptables -A OUTPUT -o ens1 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p TCP --sport 32768:60999 -j ACCEPT
iptables -A OUTPUT -p UDP --sport 32768:60999 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i enp1s0 -p TCP --dport 22 -j ACCEPT
iptables -A OUTPUT -o enp1s0 -p TCP --sport 22 -j ACCEPT
iptables -A INPUT -i enp1s0 -p TCP --dport 32400 -j ACCEPT
iptables -A OUTPUT -o enp1s0 -p TCP --sport 32400 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -i ens1 -j ACCEPT
iptables -t nat -A POSTROUTING ! -o lo -j MASQUERADE
iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE

Добавил строку:
iptables -t nat -A POSTROUTING ! -o lo -j MASQUERADEперед правилом NAT-MASQUERADE

iptables-save теперь выдаёт такое:
# Generated by iptables-save v1.6.0 on Tue Nov 28 18:13:46 2017
*filter
:INPUT DROP [24513:1792330]
:FORWARD DROP [43:1720]
:OUTPUT DROP [775:252969]
:DOCKER - [0:0]
:DOCKER-ISOLATION - [0:0]
-A INPUT -i ens1 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i enp1s0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i enp1s0 -p tcp -m tcp --dport 32400 -j ACCEPT
-A INPUT -i enp1s0 -p tcp -m tcp --dport 9443 -j ACCEPT
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ens1 -m conntrack --ctstate NEW -j ACCEPT
-A OUTPUT -o ens1 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 32768:60999 -j ACCEPT
-A OUTPUT -p udp -m udp --sport 32768:60999 -j ACCEPT
-A OUTPUT -o enp1s0 -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -o enp1s0 -p tcp -m tcp --sport 32400 -j ACCEPT
-A OUTPUT -o enp1s0 -p tcp -m tcp --sport 9443 -j ACCEPT
-A DOCKER -d 172.17.0.6/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 443 -j ACCEPT
-A DOCKER -d 172.17.0.6/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT
-A DOCKER-ISOLATION -j RETURN
COMMIT
# Completed on Tue Nov 28 18:13:46 2017
# Generated by iptables-save v1.6.0 on Tue Nov 28 18:13:46 2017
*nat
:PREROUTING ACCEPT [14941:1571287]
:INPUT ACCEPT [2392:201088]
:OUTPUT ACCEPT [3914:484358]
:POSTROUTING ACCEPT [71:4782]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING ! -o lo -j MASQUERADE
-A POSTROUTING -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 172.17.0.6/32 -d 172.17.0.6/32 -p tcp -m tcp --dport 443 -j MASQUERADE
-A POSTROUTING -s 172.17.0.6/32 -d 172.17.0.6/32 -p tcp -m tcp --dport 80 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 9443 -j DNAT --to-destination 172.17.0.6:443
-A DOCKER -d 127.0.0.1/32 ! -i docker0 -p tcp -m tcp --dport 9080 -j DNAT --to-destination 172.17.0.6:80
COMMIT
# Completed on Tue Nov 28 18:13:46 2017
Plex работает. Есть мысль запретить все интерфейсы в качестве выходных последовательно, чтобы NAT работал только из LAN В WAN, но не обратно, не в бок (или куда ему ещё вздумается замаскарадить пакеты).
« Последнее редактирование: 28 Ноября 2017, 16:17:14 от popovis »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Re: MASQUERADING and Plex несовместимость...
« Ответ #3 : 27 Ноября 2017, 20:02:22 »
линускокапецкое правило...Разрыв всех шаблонов

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: MASQUERADING and Plex несовместимость...
« Ответ #4 : 27 Ноября 2017, 22:02:55 »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн popovis

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: MASQUERADING and Plex несовместимость...
« Ответ #5 : 28 Ноября 2017, 09:14:38 »
линускокапецкое правило...Разрыв всех шаблонов
Понять бы ещё, что вы имели ввиду.
То ли умным показаться, то ли это базовое правило в линухах?..
Но как бэ логику iptables мне понять сложно... зачем маскарадить внутрянку (lo>lan lo>wan)?
Мне NAT нужен только для внешки (lan>wan).

Пользователь добавил сообщение 28 Ноября 2017, 09:17:21:

Видимо когда не знаешь, так пытаешься набить репутацию, правда хороший выход?
Ни один не подсказал решение, но каждый посчитал сделать пафосный жест...
Типа "нуб"...
« Последнее редактирование: 28 Ноября 2017, 09:17:21 от popovis »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Re: MASQUERADING and Plex несовместимость...
« Ответ #6 : 28 Ноября 2017, 09:35:51 »
В Вашей постановке задачи нет главного: что и где работает и что должно в итоге получиться.
Что такое Plex я, лично, понятия не имею (ладно, уже загуглил) и интереса не было. И тем более изучать как оно работает. А потому изначально просто прошёл мимо

Но придуманное Вами правило я не смог пройти мимо. Оно просто шедеврально. Линусу можно смело идти на пенсию...

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: MASQUERADING and Plex несовместимость...
« Ответ #7 : 28 Ноября 2017, 09:36:51 »
Чтобы подсказать решение, надо понимать исходные данные.
Вы их не предоставили. А гадать мы тут сами отучились и других отучаем по мере сил.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн popovis

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: MASQUERADING and Plex несовместимость...
« Ответ #8 : 28 Ноября 2017, 16:08:22 »
Чтобы подсказать решение, надо понимать исходные данные.
Вы их не предоставили. А гадать мы тут сами отучились и других отучаем по мере сил.
Говорите по-русски, чего конкретно вам не хватает?
В первом посту написал все правила, что добавлял в iptables, добавил вывод iptables-save, пояснил что видно из tcpdump, пояснил какое правило мешает и предложил вариант который у меня проблему снял. В ответ ни увидел ничего, ни одного совета по теме, ничего того, чего не мог бы написать любой прохожий с улицы понятия не имеющий что такое линукс и не читавший первый пост (а зачем, правда?). Я подозреваю, что на форуме сидят тролли не относящиеся к ubuntu никак совсем и пытаются как-то самоудовлетвориться вводя меня в заблуждение.

Пользователь добавил сообщение 28 Ноября 2017, 16:30:48:
В Вашей постановке задачи нет главного: что и где работает и что должно в итоге получиться.
Что такое Plex я, лично, понятия не имею (ладно, уже загуглил) и интереса не было. И тем более изучать как оно работает. А потому изначально просто прошёл мимо

Но придуманное Вами правило я не смог пройти мимо. Оно просто шедеврально. Линусу можно смело идти на пенсию...
Спасибо! Вы очень помогли!
Вам не жалко времени чтобы писать всякую бессмысленную хрень 2 и более раз, но вот подкрепить свой ответ чем-то типа "вы вот тут и тут у вас косяк т.к. это правило повлияет на то и то, а на самом деле это можно сделать так и так" вам слабо. Из этого делаю вывод, что знаний у вас нет и делать вам в принципе нечего.
Plex - онлайн кинотеатр с веб клиентом и конвертированием файлов налету, с возможностью выбора качества воспроизведения и звуковой дорожки. Работает через веб-клиент в браузере, через приложения на смарт-ТВ, андроидах и ИОСАХ.
Не работало онлайн воспроизведение видео т.к. по какой-то причине пакеты, которые должны были лететь напрямую через интерфейс с LocalHost'a маскарадились как будто были отправлены из LAN в интернет через WAN (по факту эти пакеты летят либо из Lo в LAN, что в марштутизации не нуждается, либо из Lo в WAN, что маршрутизируется вышестоящим роутером, но никак не убунтой).
« Последнее редактирование: 28 Ноября 2017, 16:37:27 от popovis »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: MASQUERADING and Plex несовместимость...
« Ответ #9 : 28 Ноября 2017, 18:33:55 »
чего конкретно вам не хватает?
Вывода iptables-save, как несложно догадаться.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн botsman

  • Активист
  • *
  • Сообщений: 296
    • Просмотр профиля
Re: MASQUERADING and Plex несовместимость...
« Ответ #10 : 28 Ноября 2017, 19:49:20 »
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING ! -o lo -j MASQUERADE
-A POSTROUTING -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 172.17.0.6/32 -d 172.17.0.6/32 -p tcp -m tcp --dport 443 -j MASQUERADE
-A POSTROUTING -s 172.17.0.6/32 -d 172.17.0.6/32 -p tcp -m tcp --dport 80 -j MASQUERADE

Скажите, зачем столько правил в цепочке POSTROUTING если результат их одинаков? Ведь если мне не изменяет память - второе правило будет срабатывать всегда, если исходящий интерфейс не lo. Тогда какой смысл во всей остальной цепочке POSTROUTING?

« Последнее редактирование: 28 Ноября 2017, 19:54:02 от botsman »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13758
    • Просмотр профиля
Re: MASQUERADING and Plex несовместимость...
« Ответ #11 : 28 Ноября 2017, 21:37:49 »
Да тут вообще много "зачем", начиная с этого самого "второго правила". Это учитывая, что приложение, с которым борются, работает на этой же машине и -o interface -j MASQUERADE для него вообще выглядит диким, так как поле source  в исходящем пакете и так будет содержать адрес интерфейса.
Но автор сам отметил:
Но как бэ логику iptables мне понять сложно...

Но тут нужно присвиснуть, что приложение работает в контейнере Docker и содержимое пакета может по другому выглядеть... Могу и ошибаться. "Контейнерными перевозками" пока не увлекался, потому извиняйте.

Оффлайн popovis

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: MASQUERADING and Plex несовместимость...
« Ответ #12 : 29 Ноября 2017, 05:28:24 »
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING ! -o lo -j MASQUERADE
-A POSTROUTING -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 172.17.0.6/32 -d 172.17.0.6/32 -p tcp -m tcp --dport 443 -j MASQUERADE
-A POSTROUTING -s 172.17.0.6/32 -d 172.17.0.6/32 -p tcp -m tcp --dport 80 -j MASQUERADE

Скажите, зачем столько правил в цепочке POSTROUTING если результат их одинаков? Ведь если мне не изменяет память - второе правило будет срабатывать всегда, если исходящий интерфейс не lo. Тогда какой смысл во всей остальной цепочке POSTROUTING?
Конкретно эти правила я не вбивал, но если я правльно понял, то я не могу сказать iptables одним правилом "делай нат из точки А в точку Б" или даже "делай нат "в точку Б, но не в А, и не в С", так?
Первое и второе правила дублируют друг друга, но я нашёл только этот способ сказать iptables что мол "туда не ходи, сюда ходи".
Если одно правило убрать, то он пишет примерно так:
-A POSTROUTING -o enp1s0 -j MASQUERADE
-A POSTROUTING -s 172.17.0.6/32 -d 172.17.0.6/32 -p tcp -m tcp --dport 443 -j MASQUERADE
-A POSTROUTING -s 172.17.0.6/32 -d 172.17.0.6/32 -p tcp -m tcp --dport 80 -j MASQUERADE
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -j MASQUERADE
И если удалить дубли, то нат не работает.
А вот убрать
-A POSTROUTING -o enp1s0 -j MASQUERADE
надо попробовать.

Пользователь добавил сообщение 29 Ноября 2017, 05:32:17:
Да тут вообще много "зачем", начиная с этого самого "второго правила". Это учитывая, что приложение, с которым борются, работает на этой же машине и -o interface -j MASQUERADE для него вообще выглядит диким, так как поле source  в исходящем пакете и так будет содержать адрес интерфейса.
Но автор сам отметил:
Но как бэ логику iptables мне понять сложно...

Но тут нужно присвиснуть, что приложение работает в контейнере Docker и содержимое пакета может по другому выглядеть... Могу и ошибаться. "Контейнерными перевозками" пока не увлекался, потому извиняйте.
Докер сам создал правила и исключения для маскарада. Плекс работает как самостоятельное приложение, а докер для приложения "спрут" (что-то типа тотал коммандера по веб-морде).
P.S.: Если кто подскажет вменяемый менеджер закачки (желательно универскальный torrent+http*) с веб интерфейсом - буду благодарен.
P.P.S.: Пока смотрю сюда >>https://www.ylsoftware.com/news/651<<
« Последнее редактирование: 29 Ноября 2017, 06:14:02 от popovis »

 

Страница сгенерирована за 0.034 секунд. Запросов: 25.