Настройка socks proxy сервера на основе Dante

 Свой прокси - сервер часто бывает нужен. Для всего. И, конечно, в век тотального SSL в браузерах это не может быть простой HTTP -прокси-сервер. На основе старого доброго SQUID, например.

Сегодня рулят Соксы. Проще, легче и быстрее чем VPN

 

Но Socks серверов тоже немного. Отдельная проблема найти их для Windows (как-нибудь об этом напишу). Для Linux же  - тоже: мало, всего два:

  1. 3proxy
  2. Dante

да, вы, возможно, слышали о Squid, Privoxy и даже Putty, но все не то и все не так:

  • Squid старый, громоздкий, трудноустанавливаемый и труднонастраиваемый,
  • Privoxy   полегче, но тоже недалеко ушел и задача у него чуть другая, чем-то ближе к Squid,
  • ну а Putty - да, удобно, но это "прокси наоборот" - мы меняем клиент чтобы использовать сервер как прокси.  Не то.

Нам от socks  - прокси - сервера нужно две вещи:

  • легковесность - чтобы работал даже на одноядерных VPS / VDS
  • настройка аутентификации - чтобы работал только для нас и для кого мы дадим доступ, а не для ушлых товарищей, чьи сканеры быстро его найдут

и серверов с такими условиями популярных всего два.

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

Остается - Dante. Он же  danted daemon.  Настроим его по-быстрому:

установка

apt install dante-server

проверим:

systemctl status danted.service
 

получим вывод:

× danted.service - SOCKS (v4 and v5) proxy daemon (danted)
     Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sun 0000-00-00 07:35:24 PST; 2min 48s ago
       Docs: man:danted(8)
             man:danted.conf(5)
   Main PID: 35244 (code=exited, status=1/FAILURE)
        CPU: 39ms

все нормально - мы же его еще не настроили, вот он и не работает. Для настройки нам понадобится имя сетевого интерфейса, выполним:

ip a

как видим, у нас это enp3s0, но нередко бывает eth0

удалим текущий файл конфигурации и созадим новый с нуля:

mv /etc/danted.conf /etc/danted.conf.bak
nano /etc/danted.conf

в него впишем конфиг

logoutput: syslog
user.privileged: root
user.unprivileged: nobody

# The listening network interface or address.
internal: 0.0.0.0 port=1080

# The proxying network interface or address.
external: enp3s0

# socks-rules determine what is proxied through the external interface.
socksmethod: username

# client-rules determine who can connect to the internal interface.
clientmethod: none

client pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
}

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
}



да, если у вас активен файрволл - не забудьте разрешить в нем порт, на котором слушает danted

создадим linux пользователя и зададим ему пароль

useradd -r -s /bin/false dante_username_here
passwd dante_username_here

тут dante_username_here  - это логин к сокс серверу, а не пользователь, от имени которого будет работать danted демон,  у меня это

useradd -r -s /bin/false dante
passwd dante


пароли генерирую тут: https://www.random.org/passwords/

запустим сервер и проверим статус:

systemctl restart danted.service
status danted.service


как видим - все работает

 Loaded: loaded (/lib/systemd/system/danted.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 0000-00-00 07:54:45 PST; 4s ago


Проверяем как работает - нам поможет curl: в Linux он давно, а в Windows появился начиная с Windows 10/Server 2019, откроем консоль и выполним

curl -v -x socks5://dante_username_here:dante_username_password@your_server_ip:1080 https://httpbin.org/ip

видим

{
  "origin": "66.249.66.13"
}

т.е. адрес нашего socks - сервера. Все работает!

К слову, сайтов для проверки IP тоже не так много: все эти whatismyip.com, whatismyip.org, WhatIsMyIPAddress.com и даже radar.cloudflare.com/ip красиво смотрятся только в браузере,
в командной же строке для curl рулят старые добрые proxyjudge:

  • http://azenv.net/
  • http://www.proxyjudge.us/


но они, увы, не HTTPS, а наша же цель - проверка именно https - прокси, и при этом желательно вывести дополнительную информацию о нашем адресе, в этом нам поможет ipinfo.io, выполним

curl -v -x socks5://dante_username_here:dante_username_password@your_server_ip:1080 https://ipinfo.io/what-is-my-ip

получим заголовки и вывод тела страницы (JSON ответ):


{
  "ip": "66.249.66.13",
  "city": "Raleigh",
  "region": "North Carolina",
  "country": "US",
  "loc": "35.7721,-78.6386",
  "org": "AS15169 Google LLC",
  "postal": "27601",
  "timezone": "America/New_York",
  "readme": "https://ipinfo.io/missingauth"
}



Ура! Dante-сервер настроен и работает!







Комментарии