Установите сетевой диапазон в no_proxy переменной среды

Во-первых, конечно, возможно иметь вирусы под Unix и подобными Unix операционными системами, такими как Linux. Изобретатель термина компьютерный вирус, Fred Cohen, сделал свои первые эксперименты под 4.3BSD. Документ с практическими рекомендациями существует для записи вирусов Linux, хотя похоже, что это не имело обновления с 2003.

Во-вторых, исходный код для компьютерных вирусов sh-сценария плавал вокруг для лучше, чем 20 лет. См. статью Tom Duff 1988 года и статью Doug McIllroy 1988 года. Позже, платформенно независимый ЛАТЕКСНЫЙ вирус был разработан для конференции. Работает на Windows и Linux и *BSD. Естественно, его эффекты хуже в соответствии с Windows...

В-третьих, горстка реальных, живых компьютерных вирусов (по крайней мере), для Linux появилась, хотя не ясно, находились ли больше чем 2 или 3 из них (RST.a и RST.b) когда-нибудь "в дикой природе".

Так, реальным вопросом не является Linux/Unix/BSD, может сократить компьютерные вирусы? а скорее, Учитывая насколько большой рабочий стол Linux и население сервера, почему у того населения нет вида удивительной эпидемии вирусов, которые притягивает Windows?

Я подозреваю, что причина имеет некоторое отношение к умеренной защите, данной традиционным пользователем UNIX/group/other дискреционные меры защиты и сломанная основа программного обеспечения, которую поддерживает Linux. Я имею в виду, мой сервер все еще выполняет Slackware 12.1, но с пользовательски скомпилированным ядром и большим количеством перекомпилированных пакетов. Мой рабочий стол выполняет Arch, который является прокручивающимся выпуском. Даже при том, что они оба запускают "Linux", они не имеют много общего.

Состояние вирусов на Linux может на самом деле быть нормальным равновесием. Ситуация в Windows могла бы быть "королем дракона", действительно необычной ситуацией. Windows API является безумно барочным, Win32, NT-встроенный-API, волшебные имена устройств как LPT, CON, AUX это может работать из любого каталога, ACLs, который никто не понимает, традиция однопользовательских, нет, единственного пользователя root, машин, отмечая исполняемый файл файлов при помощи части имени файла (.exe), все это, вероятно, способствует состоянию вредоносного программного обеспечения в Windows.

57
24.09.2016, 04:04
5 ответов

Вы смотрите на него неправильный путь. no_proxy переменная среды перечисляет доменные суффиксы, не префиксы. Из документации:

no_proxy: Эта переменная должна содержать разделенный запятыми список прокси доменов верхнего уровня, не должен использоваться для.

Таким образом для дюйм/с, у Вас есть две опции:

1) Добавьте каждый IP полностью:

printf -v no_proxy '%s,' 10.1.{1..255}.{1..255};
export no_proxy="${no_proxy%,}";

2) Переименовать wget кому: wget-original и запишите сценарий обертки (названный wget) это ищет IP для хоста данного URL и определяет, должен ли он использовать прокси или нет:

#!/bin/bash
ip='';
for arg; do
   # parse arg; if it's a URL, determine the IP address
done;
if [[ "$ip" =~ ^10\.1\. ]]; then
   wget-original --no-proxy "$@";
else
   wget-original "$@";
fi;
44
27.01.2020, 19:33
  • 1
    много, я собираюсь перенести свой wget (и имена хостов использования вместо IP-адресов). –  SamK 28.10.2011, 17:27
  • 2
    Будет наличие 255*255 адресов в проблемах производительности риска no_proxy? –  jtpereyda 17.12.2015, 00:50
  • 3
    @dafrazzman: это могло быть. В конце концов, это почти 800 килобайтов шириной, который является несколько экстремальным значением для переменной среды. Это также зависит от того, насколько большой Ваша среда может быть. Для этого крайнего случая я рекомендовал бы подход обертки. –  janmoesen 21.01.2016, 12:13
  • 4
    не добавляет каждый IP полностью - это будет слишком длинно, и Вы не сможете выполнить любые команды в ударе. –  Ross 01.06.2016, 21:47
  • 5
    НИКОГДА НЕ ДЕЛАЙТЕ ЭТО, это будет генерировать что-то слишком долго для любой команды, и, если Вы вставите это /etc/environment файл, это могло повредить Ваш сервер. –  Thomas Decaux 04.12.2017, 17:56

info wget говорит:

 `no_proxy'
     This variable should contain a comma-separated list of domain
     extensions proxy should _not_ be used for.  For instance, if the
     value of `no_proxy' is `.mit.edu', proxy will not be used to
     retrieve documents from MIT.

Таким образом, переменная должна содержать список доменов, не диапазоны IP. Необходимо будет настроить надлежащие локальные псевдонимы для локальных машин в /etc/hosts файл (файлы).

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

19
27.01.2020, 19:33

Вот несколько более простой (однострочный) подход, основанный на решении janmoesen.

export no_proxy=`echo 10.1.1.{1..255} | sed 's/ /,/g'`

, который был дополнительно улучшен на основе ввода Кори Рингдала:

export no_proxy="`echo 10.1.1.{1..254},` 10.1.1.255"

sed подавляет все аргументы, переданные из расширения 10.1. {1..255}. {1..255} , либо в его коде, либо в моем. Поэтому, если вам действительно нужно расширить IP-адреса до 256 * 256, вы можете дополнительно адаптировать подход Кори Рингдала, но если вам нужно всего 256 или около того, любой из них должен идеально работать для вас.

Я предполагаю, что версия, в которой раскрываются 2 октета, будет выглядеть примерно так:

export no_proxy="`echo 10.1.{1..255}.{1..254},` 10.1.255.255"

но iTerm выдает мне ошибки о том, что списки аргументов слишком длинные, поэтому я не могу точно сказать, есть ли решение для сделать эту работу ...

13
27.01.2020, 19:33

Не совсем правильное решение, но оно может решить вашу проблему. Если вы предполагаете, что доступ к чему-либо снаружи прокси-сервера будет осуществляться с использованием DNS-имен -, а не напрямую с использованием IP-адресов -, вы можете установить его как:

export no_proxy=0,1,2,3,4,5,6,7,8,9

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

18
27.01.2020, 19:33

no_proxy, кажется, соответствует хвостовой части хоста по крайней мере с двумя символами, поэтому набор no_proxy, содержащий 100 хвостовых частей ipv4, пропустит любой URL-адрес ipv4

printf -v no_proxy '%s,' {10..99}
export no_proxy=".0,.1,.2,.3,.4,.5,.6,.7,.8,.9,$no_proxy"
curl -v http://any-ip/
0
17.09.2020, 04:41

Теги

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