Вход для пользователей

Настройка шлюза для дома или малого офиса (SOHO)

Изображение пользователя Grifon.

Попросили меня написать статью про настройку домашнего шлюза, исполняю. Оговорюсь сразу, я винду загружаю крайне редко, поэтому в качестве шлюза буду использовать свой домашний компьютер. Никакими железячными решениями меня не заманишь, даже если прошивать их линуксом (об этом просите других, на сайте есть такие). В компе 2 сетевые карты и 1 WIFI. К одной подключен dsl-модем, вторая с WIFI объединены мостом, образуя локальную сеть. Поднят прокси и фаервол. Дистрибутив slamd64-current. Если вы найдёте ошибки, неточности или сочтёте нужным что-то добавить, пишите.

Итак, что же нам требуется для такой конфигурации:
  1. свежее ядро (начиная с 2.6.25 старый стек IEEE 802.11 был отмечен, как устаревший, поэтому мы используем новый);
  2. драйвер madwifi (для моей сетевой карты D-Link DWL-G520 H/W B3 на чипе Atheros), который позволяет работать сетевой карте в режиме точки доступа, в отличие от того, который в ядре;
  3. hostapd (демон, управляющий авторизацией беспроводной сети);
  4. bridge-utils
  5. dhcpd (для автоматической настройки клиентов)
  6. DNS-сервер bind 9-ой версии
  7. squid

Возможно тем, кто использует более распространённые дистрибутивы многое можно пропустить, по скольку это уже сделано разработчиками. Ознакомьтесь с документацией по своему дистрибутиву.

  1. Конфигурация ядра.
    # 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)

  2. Сборка и установка драйвера:
    # 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.

  3. Дальше установим защиту беспроводной части сети. Для этого понадобится 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

  4. Теперь займёмся локальной сетью. Для определённости, пусть будет 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

  5. Как компилировать 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

    Получилась очень простая защита а-ля "антихакер" в виндовых брэндмаурах.

  6. 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
Вот так выглядит работа с телефона:
Поиск

Добавление

Прокси:

Интернет:

Комментарии

Изображение пользователя Dinya.

Ну наконец-то! Списибо :)

btw, службы в debian-based можно запускать так:
invoke-rc.d service option

Улыбайтесь!.. завтра будет хуже ;-) (c) Мёрфи

Простите за оффтоп, но я не понял, куда на форум писать о моей проблеме, так как не вижу ничего кроме раздела про SAMS..

Обращаюсь за помощью ко всем пользователям линукс кто пользуется услугам провайдера "домком". Никак не соображу вот как настроить Домком-интернет в линуксе. Вот, приходится пока выхоить из винды ((

Спрашивал у своих уфимских товарищей (я сам из Уфы),
они отвечают что в Уфе совершенно по-другому интернет в линуксе настраивается, т.к. другой провайдер там. А с этим домкомом как справиться не понятно..

Если есть знающие люди готовые помочь, м.б. оставите свой номер аськи или джаббера.
Помогите пожалуйста.

С/у

Изображение пользователя D3viL.

Всё просто. Тебе нужно создать запись в блоге.

<=== В меню слева выбери: "Создать материал", затем "Запись в блоге".

Там в следующий раз и создавай новые темы.

Пожелания и возмущения оставляй здесь , это важно!

После прочтения моего ответа, сообщи, что ты прочел.
Чтоб можно было удалить весь оффтоп (: