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

HTTP proxy

Даже с введением SOCKS5, HTTP и HTTPS остаются самыми популярными прокси. HTTP — это сокращение от Hypertext Transfer Protocol.

Основная цель использования HTTP-прокси — организовать работу браузеров и других программ, использующих протокол TCP. Другими словами, это программы, которые используют стандартные порты 80, 8080, 3128. Прокси HTTP и HTTPS работают довольно просто. Браузер отправляет запросы прокси-серверу на открытие определенного ресурса (URL). Затем сервер получает данные и отправляет их браузеру.

Разница между HTTP и HTTPS заключается в том, что первый является незащищенным прокси, а второй — защищенным. Прокси-серверы HTTPS, также называемые HTTP через TLS или SSL, используются для безопасных соединений, например, при отправке данных вашей кредитной карты и других конфиденциальных данных

SOCKS proxy

SOCKS — это сокращение от Socket Secure, сетевого протокола, который направляет сетевой трафик через брандмауэр, тем самым облегчая связь с серверами. SOCKS, в отличие от HTTP / HTTPS, не модерирует HTTP-заголовок — серверы передают данные через себя, ничего не меняя.

Сегодня SOCKS — это самый продвинутый протокол передачи данных, специально разработанный для программ, которые не поддерживают использование прокси напрямую. Они работают со стандартными портами 1080 и 1081. Прокси-сервер SOCKS эволюционировал от исходного SOCKS до SOCKS4 и последнего усовершенствования SOCKS5.

Прокси-серверы SOCKS4 поддерживают только TCP-соединения, в то время как более новые серверы SOCKS5 поддерживают UDP, TCP, авторизацию по логину и паролю, а также удаленный DNS-запрос. Для справки, SOCKS — полностью анонимный прокси.

tun2socks

Это открытый проект, написанный китайскими разработчиками на языке Golang и распространяющийся по лицензии GPL-3.0. Данный проект, позволяет поднять туннель, который заворачивает весь трафик через SOCKS-прокси.

Суть работы сервиса tun2socks заключается в том, что в ОС создается виртуальный интерфейс, который операционная система воспринимает как обычный сетевой интерфейс. Далее настроив маршрутизацию можно отправить весь трафик в туннель.

Более детально про работу, настройку описано в официальной документации данного проекта: https://github.com/xjasonlyu/tun2socks/wiki

Мы же опишем пример настройки сервиса tun2socks на ubuntu 22.04

Схема

    apt update 
    apt upgrade 
    apt install golang-go gccgo-go bind9 
    
    cd /opt 
    
    # скачиваем нужный нам релиз сервиса с ресурса https://github.com/xjasonlyu/tun2socks/releases 
    
    wget https://github.com/xjasonlyu/tun2socks/releases/download/v2.5.0/tun2socks-linux-amd64.zip unzip tun2socks-linux-amd64.zip 
    chmod +x /opt/tun2socks-linux-amd64 
    
    # оборачиваем все это в сервис 
    
    nano /etc/systemd/system/tun2socks.service  
    
    [Unit] 
    Description=Tun2Socks gateway 
    After=network.target  
    
    [Service] 
    User=root 
    Type=idle  
    ExecStart=/usr/sbin/tun2socks-linux-amd64 -device tun://gatewaytun -proxy socks5://10.0.0.5:1080 & sleep 3; ip link set gatewaytun up Restart=on-failure 
    [Install] 
    WantedBy=multi-user.target 
    
    # настраиваем сеть nano /etc/netplan/$$$$$$$$$$$$$$.yaml 
    
    network:  
	    ethernets:  
		    ens160: 
			    optional: true 
			    adresses: [192.168.1.10/24] 
			    routes: - to: 10.0.0.5 via: 192.168.1.1 
		    gatewaytun: 
			    dhcp4: no dhcp-identifier: mac 
			    optional: true 
			    addresses: [10.10.10.10/24] 
			    nameservers: addresses: [8.8.8.8] 
			    routes: - to: 0.0.0.0/0 via: 10.10.10.10 
	    version: 2 
    
    # включаем маршрутизацию на сервере 
    
    nano /etc/sysctl.conf net.ipv4.ip_forward=1