Свой прокси - сервер часто бывает нужен. Для всего. И, конечно, в век тотального SSL в браузерах это не может быть простой HTTP -прокси-сервер. На основе старого доброго SQUID, например.
Сегодня рулят Соксы. Проще, легче и быстрее чем VPN
Но Socks серверов тоже немного. Отдельная проблема найти их для Windows (как-нибудь об этом напишу). Для Linux же - тоже: мало, всего два:
- 3proxy
- 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-сервер настроен и работает!
Комментарии
Отправить комментарий