Попросили меня написать статью про настройку домашнего шлюза, исполняю. Оговорюсь сразу, я винду загружаю крайне редко, поэтому в качестве шлюза буду использовать свой домашний компьютер. Никакими железячными решениями меня не заманишь, даже если прошивать их линуксом (об этом просите других, на сайте есть такие). В компе 2 сетевые карты и 1 WIFI. К одной подключен dsl-модем, вторая с WIFI объединены мостом, образуя локальную сеть. Поднят прокси и фаервол. Дистрибутив slamd64-current. Если вы найдёте ошибки, неточности или сочтёте нужным что-то добавить, пишите.
Итак, что же нам требуется для такой конфигурации:
- свежее ядро (начиная с 2.6.25 старый стек IEEE 802.11 был отмечен, как устаревший, поэтому мы используем новый);
- драйвер madwifi (для моей сетевой карты D-Link DWL-G520 H/W B3 на чипе Atheros), который позволяет работать сетевой карте в режиме точки доступа, в отличие от того, который в ядре;
- hostapd (демон, управляющий авторизацией беспроводной сети);
- bridge-utils
- dhcpd (для автоматической настройки клиентов)
- DNS-сервер bind 9-ой версии
- squid
Возможно тем, кто использует более распространённые дистрибутивы многое можно пропустить, по скольку это уже сделано разработчиками. Ознакомьтесь с документацией по своему дистрибутиву.
- Конфигурация ядра.
# cd /usr/src
# tar xf /path/to/linux-2.6.25.tar.bz2
# cd linux-2.6.25
# make menuconfig (oldconfig, xconfig и т.д.)
отмечаем опции:
[*] Enable loadable module support --->
[*] Automatic kernel module loading
Networking --->
[*] Networking support
Networking options --->
[*] TCP/IP networking
[*] Network packet filtering framework (Netfilter) --->
802.1d Ethernet Bridging
Wireless --->
<*> Generic IEEE 802.11 Networking Stack (mac80211)
Device Drivers --->
[*] Network device support --->
Wireless LAN --->
[*] Wireless LAN (IEEE 802.11)
-*- Cryptographic API --->
-*- AES cipher algorithms
# make
Устанавливаем.(make modules_install && make install)
- Сборка и установка драйвера:
# cd /usr/src
# tar xf /path/to/madwifi-0.9.4.tar.gz
# cd madwifi-0.9.4
# make KERNELPATH=/usr/src/linux-2.6.25
# make install
# echo 'options ath_pci autocreate=none' >> /etc/modprobe.conf
Последняя строка отключает создание устройства при загрузке драйвера. Теперь уже можно перезагрузить систему с новым ядром. Создаём интерфейс в режиме точки доступа:
# wlanconfig ath0 create wlandev wifi0 wlanmode ap
Если всё прошло успешно, то появится интерфейс ath0.
- Дальше установим защиту беспроводной части сети. Для этого понадобится hostapd.
# cd /usr/src
# tar xf /path/to/hostapd-0.5.10.tar.gz
# cd hostapd-0.5.10
Создаём файл .config:
CONFIG_DRIVER_HOSTAP=y
CONFIG_DRIVER_MADWIFI=y
CFLAGS += -I../madwifi-0.9.4
CONFIG_IAPP=y
CONFIG_RSN_PREAUTH=y
CONFIG_PEERKEY=y
CONFIG_IEEE80211W=y
CONFIG_EAP=y
CONFIG_EAP_MD5=y
CONFIG_EAP_TLS=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_GTC=y
CONFIG_EAP_TTLS=y
CONFIG_EAP_SIM=y
CONFIG_EAP_AKA=y
CONFIG_EAP_PAX=y
CONFIG_EAP_PSK=y
CONFIG_EAP_SAKE=y
CONFIG_EAP_GPSK=y
CONFIG_EAP_GPSK_SHA256=y
CONFIG_PKCS12=y
CONFIG_RADIUS_SERVER=y
Компилируем и устанавливаем:
# make && make install
# cp madwifi.conf /etc/hostapd.conf
Редактируем файл /etc/hostapd.conf (в нём много параметров, вот важные):
interface=ath0
bridge=lan
driver=madwifi
# Network name:
ssid=MYNET
# стандарт IEEE 802.11g. Скорость до 54 MB/s
hw_mode=g
wpa=1
wpa_passphrase=secret password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
Теперь займёмся локальной сетью. Для определённости, пусть будет eth0 - интерфейс, подсоеденённый к dsl-модему, eth1 - интерфейс локальной сети. Для объединения сетевых интерфейсов используется пакет bridge-utils. В его состав входит утилита brctl, управляющая сетевыми мостами.
Соединяем сети командами
# brctl addbr lan
# brctl addif lan eth1
# brctl addif lan ath0
# ifconfig eth1 0.0.0.0 promisc up
# ifconfig ath0 0.0.0.0 promisc up
# ifconfig lan 192.168.0.1 netmask 255.255.255.0 up
# hostapd -B /etc/hostapd.conf
- Как компилировать dhcpd я писать не буду, потому что он есть, наверно, уже в любом дистрибутиве и не требует модификации.
Редактируем /etc/dhcpd.conf
default-lease-time 86400;
ddns-update-style none;
authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
option domain-name "localnet";
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.254;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
option domain-name-servers 192.168.0.1;
}
Запускаем:
# dhcpd
Или так:
# service dhcpd start
На этом этапе у нас уже есть локальная сеть. Осталось обеспечить её Интернетом. Это не должно быть проблемой и зависит от провайдера.
Включим маршрутизацию пакетов:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Включаю трансляцию адресов. Тип подключения к моему провайдеру - pppoe, поэтому:
# iptables -t nat -A POSTROUTING -o ppp+ -j MASQUERADE
Если адрес постоянный, то можно вместо предыдущей комады использовать:
# iptables -t nat -A POSTROUTING -o интерфейс -j SNAT --to-source адрес
Запрещаем входящие соединения (кроме локальных и исходящих):
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -i lan -j ACCEPT
# iptables -A INPUT -j REJECT
# iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A FORWARD -i lan -j ACCEPT
# iptables -P FORWARD DROP
Получилась очень простая защита а-ля "антихакер" в виндовых брэндмаурах.
- bind - ещё один пакет, который есть в любом дистрибутиве, поэтому сразу перейдём к конфигурационному файлу, как правило, /etc/named.conf
options {
directory "/var/named";
forward first;
forwarders {
/* как правило, это единственное, что нужно изменить */
адреса серверов DNS;
};
};
zone "." IN {
type hint;
file "caching-example/named.ca";
};
zone "localhost" IN {
type master;
file "caching-example/localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "caching-example/named.local";
allow-update { none; };
};
Запускаем:
# named
Или
# service named start
В /etc/resolv.conf пропишем первой строкой:
nameserver 127.0.0.1
Тестируем:
dig @127.0.0.1 ya.ru
Ну вот и всё, теперь мы можем пользоваться как проводной, так и беспроводной связью, не боясь остаться без Интернета, играть в сетевые игры и много чего другого...
Установку, конфигурирование squid я описывать не буду, по скольку это достойно отдельной статьи, коих написано не мало.
В заключение хочу отметить, что если использовать другие дистрибутивы Linux, например, Debian, Ubuntu, FedoraCore и т.п. установку из исходного кода можно избежать.
Для Debian достаточно выполнить
aptitude install madwifi-tools hostapd bridge-utils dhcp bind9 squid
Для FedoraCore:
yum install madwifi hostapd bridge-utils bind dhcp squid
Так же немного отличается запуск служб:
Debian
/etc/init.d/bind9 start
FedoraCore
service named start
Вот так выглядит работа с телефона:
Поиск
Добавление
Прокси:
Интернет:
Комментарии
Ну наконец-то! Списибо :)
btw, службы в debian-based можно запускать так:
invoke-rc.d service optionУлыбайтесь!.. завтра будет хуже ;-) (c) Мёрфи
Простите за оффтоп, но я не понял, куда на форум писать о моей проблеме, так как не вижу ничего кроме раздела про SAMS..
Обращаюсь за помощью ко всем пользователям линукс кто пользуется услугам провайдера "домком". Никак не соображу вот как настроить Домком-интернет в линуксе. Вот, приходится пока выхоить из винды ((
Спрашивал у своих уфимских товарищей (я сам из Уфы),
они отвечают что в Уфе совершенно по-другому интернет в линуксе настраивается, т.к. другой провайдер там. А с этим домкомом как справиться не понятно..
Если есть знающие люди готовые помочь, м.б. оставите свой номер аськи или джаббера.
Помогите пожалуйста.
С/у
Всё просто. Тебе нужно создать запись в блоге.
<=== В меню слева выбери: "Создать материал", затем "Запись в блоге".
Там в следующий раз и создавай новые темы.
Пожелания и возмущения оставляй здесь , это важно!
После прочтения моего ответа, сообщи, что ты прочел.
Чтоб можно было удалить весь оффтоп (: