Використання http proxy і socks в linux, блог линуксоида

У Linux існує багато корисних консольних команд, які при необхідності хотілося б запустити через proxy. Деякі додатки мають вбудовану підтримку proxy, а деякі ні. Далі описано як користуватися затребуваними утилітами через proxy, навіть тими, які цієї підтримки не мають.

curl: передача даних через proxy

curl має повноцінну підтримку як HTTP proxy так і SOCKS.

Частина параметрів curl можна записати в файл

Читайте також: Вибираємо операційну систему

За допомогою time і curl також можна заміряти час відгуку сервера:

# Без proxy:
time curl check-host.net/ip
# З proxy:
time curl --socks5 11.22.33.44:5555 check-host.net/ip
# Або будь-якого сайту:
time curl habrahabr.ru

Результат буде виглядати так:

real 0m0.307s
user 0m0.000s
sys 0m0.004s

wget: завантаження файлів через proxy

wget має вбудовану підтримку proxy. Недолік лише в тому, що тільки підтримку HTTP proxy. Для використання спільно з SOCKS рекомендується використовувати соксіфікатор dante.

Щоб весь час не вказувати -proxy-user та -proxy-password можна їх прописати в файл

ssh: доступ до серверів

Для доступу до серверів через ssh і proxy також краще використовувати соксіфікатор dante.

Читайте також: дистрибутива Debian виповнилося 18 років

apt-get install dante-client # приклад для Debian-based систем

За допомогою socksify можна направити через proxy майже будь-який додаток, не тільки консольне.

Щоб весь час не вводити дані про proxy можна створити файл /etc/socks.conf
Приклад для SOCKS:

route <
from: 0.0.0.0/0 to: 0.0.0.0/0 via: 11.22.33.44 port = 55555
protocol: tcp udp
proxyprotocol: socks_v4 socks_v5
method: none
>

route <
from: 0.0.0.0/0 to: 0.0.0.0/0 via: 11.22.33.44 port = 8080
command: connect
proxyprotocol: http
method: username
>

Читайте також: Установка CentOS 5

export SOCKS_USERNAME = "username"
export SOCKS_PASSWORD = "password"

DNS запити через proxy

Часто потрібно щоб і перетворення імен відбувалося через proxy. Якщо використовувати dante, то запит на перетворення імен йде і через proxy, і через іменний сервер зазначений в /etc/resolv.conf. Зрозуміти чому ж йде два однакових запиту замість одного не вдалося. Тому можна запропонувати два варіанти:

2) Змінити /etc/resolv.conf і виставити іменні сервера необхідної країни, або просто відмінні від серверів провайдера. Наприклад встановити сервера Google:

nameserver 8.8.8.8
nameserver 8.8.4.4

Щоб дані не були перезаписані іменними серверами провайдера (при перепідключенні), можна заборонити оновлення списку іменних серверів мережевого менеджеру (NetworkManager / wicd) або DHCP-клієнта (спасибі ergil за коригування).

Або скористатися «грубим» методом - забороною зміни файлу /etc/resolv.conf:

sudo chattr + i /etc/resolv.conf

Якщо є якісь доповнення, будь ласка, напишіть, це буде корисно дізнатися і застосувати.

Навігація по публікаціям