При работе за прокси, люди испытывают неудобство при обновлении и установке портов. Хотя, наверное, догадываются, что FreeBSD может элегантно обходить эти камни, но не знают как. Ну что же, поможем им еще полюбить фри за ее разносторонность. Обновление портов будем производить CVSUPом с использованием prtunnel . Это может быть из-за отсутствия NAT, например, при некоторых конфигурациях спутникового интернета, религиозного вероисповедания начальства и т.п. Загружать исподники будем традиционно с помощью утилиты fetch только укажем, куда ей ходить
Обновление портов CVSUP через прокси. Prtunnel это:
prtunnel is a program that can tunnel TCP/IP connections in a variety of ways, including through HTTP and SOCKS5 proxy servers. Some if its possible uses include: 1 ) Tunneling TCP connections from client programs to a remote server through an HTTP or SOCKS5 proxy (useful if you're behind such a proxy and want to use a program that doesn't have native proxy support) 2 ) Tunneling TCP connections from SOCKS-capable client programs through an HTTP or SOCKS5 proxy 3 ) Tunneling TCP connections from an IPv4 client program to an IPv6 server and vice-versa 4 ) Forwarding TCP connections 5 ) Running as a simple SOCKS proxy server prtunnel is open source software available under a BSD-style license. It has been developed and used under Linux and BSD-based operating systems.
Как видите, prtunnel можно применять для различных нужд. Не только для обновления портов, однако в данном случае, мы заставим его работать именно для обновления портов. Инсталлируем
# cd /usr/ports/ # make search name='prtunnel' Port: prtunnel-0 .2 .7 Path: /usr/ports/net/prtunnel Info: Tunnel for TCP connections using an HTTP or SOCKS5 proxy Maint: vd@FreeBSD.org B-deps: R-deps: WWW: http://joshbeam.com/software/prtunnel.php
# cd //usr/ports/net/prtunnel && make install clean ~~~~~~~~~~~~~~~~~~~~~~~~ ===> SECURITY REPORT: This port has installed the following files, which may act as network servers and may therefore pose a remote security risk to the system./usr/local/bin/prtunnel If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type 'make deinstall' to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage:http://joshbeam.com/software/prtunnel.php ===> Cleaning for prtunnel-0 .2 .7
Настраиваем CVSUP для работы с prtunnel. Теперь необходимо поправить конфиг cvsup.conf, чтобы он смог работать через туннель В default host нужно указать 127.0.0.1 , а не cvsupX.FreeBSD.org .
*default host =127 .0 .0 .1 *default base=/usr *default prefix=/usr *default release=cvs *default tag=RELENG_6_3 *default delete use-rel-suffix *default compress src-all *default tag=RELENG_6_3 *default tag=. ports-all doc-all
Создаем туннель синхронизируемся и закрываем его. Создаем туннель с cvsup5.FreeBSD.org
# prtunnel -t http -H IP_Proxy -P Port_Proxy -D 5999 cvsup5.FreeBSD.org 5999
prtunnel daemon started Waiting for connection to port 5999...
Флаги: -t <Типр прокси> По умолчанию стоит http (default), но можно использовать socks5, direct, direct6 -H адрес прокси -P порт прокси -u имя пользователь -p пароль пользователя -D используемый порт Запускаем cvsup.
# cvsup -g -L 2 -z /etc/cvsup.conf
После синхронизации незабываем закрыть туннель.
Использования nc в качестве прокси для cvsup и csup. Есть еще один метод синхронизации портов с использованием netcat . В /etc/rc.conf добавляем:
В настройку /etc/inetd.conf добавим следующее:
cvsup stream tcp nowait root /usr/bin/nc -xIP_Proxy:Port_Proxy -Xconnect cvsup5.FreeBSD.org 5999
Теперь необходимо поправить конфиг cvsup.conf и начать синхронизацию. В default host нужно указать 127.0.0.1 , а не cvsupX.FreeBSD.org .
*default host =127 .0 .0 .1 *default base=/usr *default prefix=/usr *default release=cvs *default tag=RELENG_6_3 *default delete use-rel-suffix *default compress src-all *default tag=RELENG_6_3 *default tag=. ports-all doc-all
Так же nc можно командой запустить:
# nc -x192.168.0.8:3128 -Xconnect cvsup5.FreeBSD.org 5999 OK 17 0 SNAP_16_1h CVSup server ready
Проверяем и не прерывая сесии синхронизируемся.
# sockstat |grep nc root nc 56423 3 tcp4 192.168.0.8:56595 192.168.0.8:3128
Установка портов через прокси. Как было упомянуто выше, будем использовать утилиту fetch .
нам говорит следующее:
EXAMPLES To access a proxy server on proxy.example.com port 8080, set the HTTP_PROXY environment variable in a manner similar to this: HTTP_PROXY=http://proxy.example.com:8080 If the proxy server requires authentication, there are two options avail- able for passing the authentication data. The first method is by using the proxy URL: HTTP_PROXY=http://<user>:<pwd>@proxy.example.com:8080 The second method is by using the HTTP_PROXY_AUTH environment variable: HTTP_PROXY=http://proxy.example.com:8080 HTTP_PROXY_AUTH=basic:*:<user>:<pwd>
Исходя из рекомендаций в странице руководства пропишем в /etc/make.conf такие параметры.
FETCH_ENV=FTP_PROXY=http://IP_Proxy:Port_Proxy FETCH_ENV=HTTP_PROXY=http://IP_Proxy:Port_Proxy
При авторизации в прокси используем следующие значения в /etc/make.conf
FETCH_ENV=FTP_PROXY=http://USER:PASS@IP_Proxy:Port_Proxy FETCH_ENV=HTTP_PROXY=http://USER:PASS@IP_Proxy:Port_Proxy
Или следующий метод авторизации с применением HTTP_PROXY_AUTH
HTTP_PROXY=http://IP_Proxy:Port_Proxy HTTP_PROXY_AUTH=basic:*:<USER>:<PASS>
Что бы соединение и подключение происходил, в настройках прокси сервера разрешите метод http_connect на порт 5999