Linux в Красноярске

28 марта 2009

Прозрачное проксирование для localhost

Прозрачное проксирование удобно тем, что нет необходимости изменять настройки браузера, особенно когда используется несколько браузеров. Также прозрачным проксированием удобно ограничивать посещение определенных сайтов. В этой заметке расскажу какие минимальные настройки необходимо сделать, чтобы организовать прозрачное проксирование на том же компьютере, где установлен прокси. В примере использована ОС Debian Etch, в качестве прокси используется Squid3.

Для начала необходимо установить Squid. Сделать это можно выполнив в командной строке:
sudo aptitude install squid3
После установки необходимо отредактировать кофигурационный файл Squid. Файл /etc/squid3/squid.conf для обеспечения прозрачного проксирования (режим transparent) на localhost минимально должен быть следующего содержания:
http_port 127.0.0.1:3128 transparent
icp_port 0
htcp_port 0
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
cache_dir ufs /var/spool/squid3 300 16 256
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

acl myip src <здесь ваш ip адрес>
http_access allow myip

http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access deny all
htcp_access deny all
email_err_data off
error_directory /usr/share/squid3/errors/Russian-koi8-r
coredump_dir /var/spool/squid3
Жирным шрифтом выделены строки, которые обеспечат доступ с вашего IP адреса. Если IP адрес не указать, то получите сообщение о том, что доступ запрещен. Оригинальный конфиг Squid3 идет с коментариями и описаниями всех параметров, чтобы выделить уставноленные параметры в конфигурационном файле, нужно выполнить следующую команду:
grep -v "^#" /etc/squid3/squid.conf | sed -e '/^$/d'
После внесения изменений в конфигурационный файл Squid необходимо перезапустить Squid или указать Squid, чтобы он перечитал измененный файл. Для это нужно в командной строке выполнить:
sudo /etc/init.d/squid3 restart
или
sudo /etc/init.d/squid3 reload
На этом минимально необходимая настройка Squid в режиме transparent закончена. Теперь надо завернуть все обращения к порту http (tcp порт 80) на настроенный нами Squid (tcp порт 3128). Для этого надо внести изменения в таблицу nat утилиты iptables, выполнив в командной строке с привилегиями root:
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner proxy -j REDIRECT --to-port 3128
При установке Squid3 автоматически создается пользователь proxy. Прокси работает с правами этого пользователя. Мы указываем iptables перенаправлять все обращения на 80 порт от любого пользователя, кроме proxy на порт 3128. Теперь открываем браузер и пробуем выйти в интернет.

Чтобы убедится что вы работаете через Squid, посмотрите последние записи в его лог файле /var/log/squid3/access.log выполнив в командной строке c привилегиями root:
tail /var/log/squid3/access.log
Видим приблизительно следующий вывод:
1238221525.987 1513 172.25.55.195 TCP_MISS/200 3457 GET http://www.google.ru/ - DIRECT/72.14.203.104 text/html
Чтобы при пререзагрузке правило для iptables восстанавливалось автоматически, можно прописать его в файле /etc/rc.local. На этом минимальная настройка прозрачного проксирования закончена.

21 марта 2009

Работа Wi-Fi интерфейса в режиме Ad-Hoc c WPA

Режим Ad-Hoc позволяет взаимодействовать различным устройствам, через беспроводные интерфейсы, без наличия точки доступа (Access Point). Этот режим удобен например для организации домашней сети. В этой статье пойдет речь о том как настроить Wi-Fi интерфейс в режиме Ad-Hoc и обеспечить безопасность соединения используя WPA (Wi-Fi Protected Access) в среде Debian Lenny.

Сразу уточняю что настройки проводились на сетевой карте Intel Wireless 4965 AG. Если у вас другая wireless карта, то здесь вы можете найти информацию о необходимом драйвере для вашей карты.

Если вы не знаете какая wireless карта у вас, то чтобы это выяснить выполните в командной строке следующую команду:
lspci
Вывод команды покажет все PCI устройства в комьютере. Для карты на моем компьютере вывод команды следующий:
05:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (rev 61)
Если во время установки системы по каким-то причинам не был установлен драйвер для wireless карты, то это можно сделать выполнив следующую команду:
sudo aptitude install firmware-iwlwifi
Так как драйвер проприетарный то в /etc/apt/sources.list должна быть прописана секция non-free, т.е должна быть приблизительно такая строка:
deb http://ftp.de.debian.org/debian lenny main contrib non-free
После установки драйвера убеждаемся что он загружен, выполнив следующую команду:
lsmod | grep iwl
Наблюдаем следующий вывод:
iwl4965 92904 0
firmware_class 6816 2 pcmcia,iwl4965
iwlcore 23520 1 iwl4965
rfkill 5652 2 iwlcore
mac80211 139680 2 iwl4965,iwlcore
led_class 3908 1 iwlcore
cfg80211 21576 2 iwl4965,mac80211

Чтобы настроить wireless интерфейс надо установить пакеты wireless-tools и wpasupplicant, выполнив в командной строке:
sudo aptitude install wireless-tools wpasupplicant
После этого пропишем настройки Wi-Fi интерфейса со статическим IP адресом в /etc/network/interfaces следующим образом:
iface wlan0 inet static
address 172.16.0.1
netmask 255.255.255.0
wpa-ssid "HomeWireless"
wpa-mode 1
wpa-ap-scan 2
wpa-proto WPA
wpa-key-mgmt WPA-NONE
wpa-pairwise NONE
wpa-group TKIP
wpa-psk "supeRpasSworD"
Параметры wpa-ssid (идентификатор сети) и wpa-psk(ключ длиной от 8 до 63 ASCII символов ) указываете свои. Если не хотите чтобы ключ хранился открытым текстом, то можете сгенерировать шестнадцатеричный ключ выполнив в командной строке:
wpa_passphrase HomeWireless supeRpasSworD
получим следующий вывод:
network={
ssid="HomeWireless"
#psk="supeRpasSworD"
psk=ce041bd5192cd3e42aa6af59902d0236a51b0c40e7721705206d75e774aedf23
}
Полученной в предпоследней строке абракадаброй заменяем ключ прописанный открытым текстом, без кавычек.

После того как закончили настраивать интерфейс в /etc/network/interfaces, выполняем следующую команду:
sudo ifup wlan0
Теперь убедимся, что настройки вступили в силу выполнив следующую команду:
sudo iwconfig wlan0
Наблюдаем следующий вывод:
wlan0 IEEE 802.11 ESSID:"HomeWireless"
Mode:Ad-Hoc Frequency:2.412 GHz Cell: 82:F1:29:0D:52:F5
Tx-Power=15 dBm
Retry min limit:7 RTS thr:off Fragment thr=2352 B
Encryption key:CE04-1BD5-192C-D3E4-2AA6-AF59-902D-0236-A51B-0C40-E772-1705-A51B-0C40-E772-1705
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Настройки IP параметров для wireless интерфейса можно посмотреть выполнив следующую команду:
sudo ifconfig wlan0
и наблюдая такой вывод:
wlan0 Link encap:Ethernet HWaddr 00:13:e8:69:21:ed
inet addr:172.16.0.1 Bcast:172.16.0.255 Mask:255.255.255.0
inet6 addr: fe80::213:e8ff:fe69:21ed/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:2048 (2.0 KiB)
На этом настройка интерфейса закончена. Для взаимодействия с другими устройствами через wireless интерфейс, надо чтобы параметры wpa-ssid и wpa-psk на взаимодействующих устройствах были идентичные.