Я хочу создать сетевой интерфейс из прокси-сервера SOCKS 5 на localhost. Это в конечном итоге будет соединено с моим беспроводным интерфейсом, который будет работать в режиме AdHoc. Это позволит всем клиентам этого интерфейса использовать прокси socks, даже если они не поддерживают SOCKS. Это будет поддерживать мои iDevices, PSP и т.д., Когда я в пути. Это сбежит с моего ноутбука. Может ли кто-нибудь предоставить некоторые полезные ресурсы, в которых я могу настроить прокси-интерфейс SOCKS на моем компьютере с Ubuntu? Заранее спасибо!
3 ответа
Конечно это возможно! Проверьте следующую ссылку:
Вам нужны tun2socks, это часть проекта BadVPN (https://github.com/ambrop72/badvpn). Здесь уже есть ответ, рекомендующий tun2socks, но в нем нет примеров.
Вы можете либо собрать tun2socks из исходного кода, либо установить скомпилированный пакет. Например, в Ubuntu:
sudo add-apt-repository ppa:hda-me/badvpn-tun2socks
sudo apt-get update
sudo apt-get install badvpn-tun2socks
ip tuntap add dev tun1 mode tun user nobody
ifconfig tun1 up 10.0.0.1/24
# --netif-ipaddr 10.0.0.2 is not a typo.
# It specifies the IP address of the virtual router inside the TUN device,
# and must be different than the IP of the TUN interface itself.
# This command assumes you have tor up and running on 127.0.0.1:9050.
# Of course, you can use any other SOCKS proxy instead.
badvpn-tun2socks --tundev tun1 --netif-ipaddr 10.0.0.2 --netif-netmask 255.255.255.0 --socks-server-addr 127.0.0.1:9050
Затем вам нужно решить, хотите ли вы перенаправить весь трафик через прокси или просто трафик на некоторые конкретные IP-адреса или хосты. Если у вас есть такой список (или вы можете создать его с разумными усилиями), это наиболее эффективное решение.
# Here list of hosts or IPs to route through proxy is just an example.
# You need to specify your own list.
list_of_IPs_to_route_via_proxy="example.com 203.0.113.5"
for IP in $(echo $list_of_IPs_to_route_via_proxy); do
route add $IP gw 10.0.0.2; done
Если вам нужно направить весь трафик через прокси, это будет немного сложнее. В этом случае я предлагаю внимательно прочитать https://github.com/ambrop72/badvpn/wiki/Tun2socks. Официальная документация предполагает, что вы хотите использовать localhost:1080 в качестве прокси, и содержит инструкции по созданию локального сервера SOCKS с динамической пересылкой по SSH. Наиболее важная часть документации:
Подключитесь к SSH-серверу, передав -D localhost:1080 команде ssh, чтобы включить динамическую пересылку. Это заставит ssh открыть локальный сервер SOCKS, который будет использовать badvpn-tun2socks. Если вы используете Putty, перейдите в Connection-> SSH-> Tunnels, введите 1080 в Source port, выберите Dynamic и нажмите Add.
Осталось только направить соединения через устройство TUN вместо существующего шлюза по умолчанию. Это делается следующим образом:
Добавьте маршрут к серверу SSH через существующий шлюз с более низкой метрикой, чем исходный маршрут по умолчанию. Если ваши DNS-серверы находятся в Интернете (а не в вашей локальной сети), также добавьте маршруты для них (как для сервера SSH). Это необходимо, потому что tun2socks не пересылает UDP по умолчанию (см. Ниже). Добавьте маршрут по умолчанию через виртуальный маршрутизатор в устройстве TUN с более низкой метрикой, чем исходный маршрут по умолчанию, но выше, чем маршруты SSH и DNS.
Это заставит все внешние соединения проходить через устройство TUN, за исключением соединения SSH (иначе SSH будет проходить через устройство TUN, которое будет проходить через ... SSH).
Например (при условии, что не существует существующих маршрутов по умолчанию с метрикой <= 6; в противном случае удалите их или измените их метрики), в Linux:
route add <IP_of_SSH_server> gw <IP_of_original_gateway> metric 5 <same for DNS> route add default gw 10.0.0.2 metric 6
В документации также есть примеры использования tun2socks для пересылки UDP, как маршрутизировать весь трафик через Tor, как получить поддержку IPv6.
Вы не можете сделать это, потому что SOCKS не работает на достаточно низком уровне - он может только через прокси-соединения TCP, а не необработанные IP-пакеты. Это потребуется для настройки маршрутизации с или без NAT; но для моста (как в brctl
) требуется еще больше - возможность отправлять необработанные кадры Ethernet.
Вместо этого вы должны изучить VPN - OpenVPN довольно прост в настройке.