Iptables для перенаправления IP поиска DNS и Порта

Это - к сожалению, очень трудная проблема. Таким образом в общем случае, ответ, к сожалению, нет. Рассмотрение $DISPLAY не достаточно как тот просто означа, что существует локальный X-сервер в некоторой форме (как xrdp), не, что пользователь физически в машине.

Единственной опцией, о которой я знаю, является ConsoleKit, который имеет, "-локальный" атрибут. К сожалению, я не знаю простого способа проверить его из сценария оболочки. Вы смогли делать что-то с помощью "ck-list-sessions".

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

Если безопасность не настолько важна, то я предлагаю проверить, устанавливает ли xrdp некоторые специальные переменные среды, которые только присутствуют для такой сессии. Просто выполненный "ENV" в терминале и Вы будете видеть то, что доступно.

22
20.07.2014, 07:21
5 ответов

Выполните все эти инструкции как корень (sudo).

Отредактируйте этот файл.

/etc/NetworkManager/NetworkManager.conf

Отключите DnsMasq, закомментировав строку dns=dnsmasq. Поставьте # перед строкой

#dns=dnsmasq

Перезапустите сеть.

service network-manager restart

Добавьте эти iptable правила.

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to 23.226.230.72:5353
iptables -t nat -A OUTPUT -p tcp --dport 53 -j DNAT --to 23.226.230.72:5353
13
27.01.2020, 19:43

Попробуйте следующее:

Сначала вы должны включить опцию переадресации в

/etc/sysctl.conf

Установить значение

net.ipv4.ip_forward = 1

Включить изменения

sysctl -p 

Сохранить и запустить следующее:

iptables -t nat -A PREROUTING -p tcp --sport 53 -j DNAT --to-destination 23.226.230.72:5353
iptables -t nat -A POSTROUTING -j MASQUERADE

Если бы вы могли указать внутренний интерфейс (-i eth1) в параметре PREROUTING или/и out-interfect (-o eth0) в параметре POSTROUTING, это было бы полезно.

ПРИМЕЧАНИЕ: Строка MASQUARADE необходима, в то время как эта строка маскирует IP-адрес назначения с основным IP-адресом.

2
27.01.2020, 19:43

Похоже, что на самом деле вам нужно контролировать то, что происходит с вашими DNS-запросами.

Не уверен, что использование iptables будет моим предпочтительным решением.

Задумывались ли вы о настройке локального DNS-сервера, который просто переадресовывал бы ваши запросы на нужный вам хост и порт? Один пример: используя опцию bind9 forwarders, вы можете добавить порт к переадресатору.

Такая настройка гораздо проще в обслуживании и устранении неполадок и может быть гораздо более гибкой. Рассмотрим преимущества кэширования, или просто рассмотрим случай, когда ваш внешний DNS-сервер не работает. В конфигурации DNS можно использовать несколько форвардеров, но только один IP в правилах iptables... .

Есть хороший обзор настройки bind9 в учебном пособии в digital ocean . Просто добавьте порт к форвардерам, и все будет готово.

Bind9 вообще не потребляет много ресурсов и легко настраивается (или, по крайней мере: проще, чем iptables :-) )

.
3
27.01.2020, 19:43

^ и $ в BRE всегда совпадают в начале и конце строки , как описано здесь .

Все sed , использующие BRE , будут выполнять те же пути. В случае использования команды N , sed видел многозначные строки как одну длинную строку в образец пространстве, при этом каждая действительная строка разделялась внедренной новой строкой \n (литерал \ и n ).

Для подтверждения

printf '1\n2\n' | sed '1N;/2$/d'

ничего не выводите. И:

printf '1\n2\n' | sed '1N;/1$/d'

дал вам:

1
2

Или с помощью команды l ook для более подробного:

$ printf '1\n2\n' | sed 1N\;l
1\n2$
1
2

$ printf '1\n2\n' | sed 1N\;l | od -t a
0000000   1   \   n   2   $  nl   1  nl   2  nl
0000012
-121--90778-

Ответы до сих пор кажутся «да есть много кода» и никто не решает вопрос с наиболее логичным ответом: 15M +? ИТАК, ЧТО? Какое отношение имеют 15M строки исходного кода к цене рыбы? Что делает это таким невообразимым?

Linux явно делает много. Больше всего на свете... Но некоторые из ваших точек показывают, что вы не уважаете то, что происходит, когда он построен и используется.

  • Не все скомпилировано. Система сборки Kernel позволяет быстро определять конфигурации, которые выбирают наборы исходного кода. Некоторые экспериментальные, некоторые старые, некоторые просто не нужны для каждой системы. Посмотрите на /boot/config- $ (uname -r) (на Ubuntu) в make menuconfig и вы увидите, сколько из них исключено.

    Это распределение для рабочего стола с переменным назначением. Конфигурационный элемент для встроенной системы будет использовать только то, что ему нужно.

  • Не все встроено. В моей конфигурации большинство функций ядра построены как модули:

     grep -c '= m '/boot/config-' uname -r '# 4078
    grep -c '= y '/boot/config-' uname -r '# 1944
    

    Для ясности, эти могут быть встроены... Так же, как их можно распечатать и сделать в гигантский бумажный сэндвич. Это просто не имело бы смысла, если бы вы не делали индивидуальную сборку для дискретной аппаратной работы (в этом случае вы бы уже ограничили количество этих предметов).

  • Модули загружаются динамически. Даже если система имеет тысячи модулей, доступных для нее, система позволит вам загрузить только то, что вам нужно. Сравните выходные данные:

     find/lib/modules/$ (uname -r )/-iname '* .ko' | wc -l # 4291
    lsmod | wc -l # 99
    

    Почти ничего не загружено.

  • Микроядра - это не одно и то же. Всего в 10 секундах при просмотре ведущего изображения на странице Википедии , на которую вы ссылаетесь , они будут выделены совершенно другим путям.

    Драйверы Linux интернализованы (в основном в виде динамически загружаемых модулей), а не в пользовательском пространстве, и файловые системы также являются внутренними. Почему это хуже, чем использование внешних драйверов? Почему микро лучше для вычислений общего назначения?


Комментарии снова подчеркивают, что вы не получаете его. Если вы хотите развернуть Linux на дискретном оборудовании (например, в аэрокосмической, TiVo, планшете и т.д.) Вы настраиваете его для создания только необходимых драйверов . То же самое можно сделать на рабочем столе с помощью make localmodconfig . В итоге вы получите крошечное целевое построение Kernel с нулевой гибкостью.

Для таких дистрибутивов, как Ubuntu, допустим один пакет 40MB Kernel. Нет, очистите, что на самом деле предпочтительнее масштабного сценария архивирования и загрузки, что сохранение 4000 + плавающих модулей в виде пакетов будет. Он использует меньше дискового пространства для них, легче пакет во время компиляции, легче хранить и лучше для их пользователей (у которых есть система, которая просто работает).

Будущее, похоже, тоже не является проблемой. Скорость процессора, плотность дисков/цены и улучшение пропускной способности, кажется, намного быстрее, чем рост ядра. Пакет 200MB Kernel через 10 лет не был бы концом, если бы мир.

Это также не улица с односторонним движением. Код выгоняют, если он не поддерживается.

-121--3115-

Попробуйте:

iptables -t nat -A OUTPUT -p tcp --dport 53 -j DNAT --to 23.226.230.72:5353;

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to 23.226.230.72:5353;

iptables -t nat -A POSTROUTING -j MASQUERADE

Это означает:
1) Любой локальный пользователь, связывающийся с портом tcp 53, отправляет сообщение 23.226.230.72 на порт 5353.
2) Совпадает с 1, но для udp
3) Установите исходную информацию для исходящего пакета как исходящую от нас.

1
27.01.2020, 19:43
iptables -t nat -A PREROUTING -p tcp --dport 53 -j DNAT --to XX.XX.XX.XX:5353
iptables -t nat -A PREROUTING -p udp  --dport 53 -j DNAT --to XX.XX.XX.XX:5353
iptables -t nat -A POSTROUTING -j MASQUERADE
0
27.01.2020, 19:43

Теги

Похожие вопросы