Показаны сообщения с ярлыком сеть. Показать все сообщения
Показаны сообщения с ярлыком сеть. Показать все сообщения

воскресенье, 16 ноября 2014 г.

О настройке WiFi в Linux

Настройка wifi будет происходить на нетбуке MSI Wind U100. В моем случае драйвер wifi-адаптера был уже скомпилирован и загружен. Оставалось только настроить подключение. Если у вас не обнаруживается карточка wifi, то имеет смысл обратиься к официальной документации Gentoo.

Первым делом нужно обеспечить активацию карты. Нас будет интересовать настройка из командной строки.
Добавим скрипт для включения карты:

root # ln -s /etc/init.d/net.lo /etc/init.d/net.enp2s0

где enp2s0 - имя моей wifi-карты в выводе ifconfig -a

Теперь мы можем включать и выключать карту отправляя команды start и stop скрипту /etc/init.d/net.enp2s0(но пока этого не делайте, нужно еще сделать некоторые настройки). Например так:

root # /etc/init.d/net.enp2s0 start

Далее нужно указать в файле /etc/conf.d/net использование wpa_supplicant. wpa_supplicant - утилита, позволяющая подсоединяться к точкам доступа (с WPA в том числе). Есть еще альтернатива - wireless-tools, но я выбрал wpa_supplicant.
File /etc/conf.d/net
modules_enp2s0="wpa_supplicant"
wpa_supplicant_enp2s0="-Dwext"
config_enp2s0="dhcp"
Здесь wext - это название драйвера, этот должен работать с почти всеми картами. Можно поэкспериментировать с другими драйверами, их названия можно найти в официальной документации. Пока такой задачи не стоит, главное заставить работать.

Настройки wpa_supplicant хранятся в файле /etc/wpa_supplicant/wpa_supplicant.conf, и здесь хранятся самые важные для нас настройки.
root # nano /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
  priority=1
  ssid="my_wifi"
  scan_ssid=1
  key_mgmt=NONE
}
Здесь my_wifi - название сети к которой вы хотите подключиться, priority - приоритет подключения (чем больше, тем лучше), key_mgmt=NONE - не использовать защиту подключения.

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

root # /etc/init.d/net.enp2s0 restart

среда, 12 июня 2013 г.

Как в Linux узнать сетевое имя коммпьютера

Чтобы узнать свое сетевое имя (hostname) существует как минимум 2 способа.

Первый из них - это воспользоваться командой uname с параметром -n:

$ uname -n
tolstiy

Та же команда, но с параметром -a выводит всю извесную ей информацию одной строкой:

$ uname -a
Linux tolstiy 3.9.4-calculate #1 SMP PREEMPT Sat Jun 8 04:28:26 EEST 2013 i686 Intel(R) Atom(TM) CPU N280 @ 1.66GHz GenuineIntel GNU/Linux

Второй способ узнать имя компьютера - это команда hostname. Введенная без параметров, она выведет искомое имя хоста:

$ hostname
tolstiy

У обоих этих команд есть man-страницы, которые легко читаются даже с поверхностным знанием английского языка. Вообще, man-документацией не стоит пренебрегать - очень часто её оказывается более чем достаточно.

Есть и еще более простой способ узнать hostname - обычно приглашение в командной строке содержит имя компьютера. Но это не обязательное правило - приглашение командной строки может меняться, а приведенные выше 2 способа работают всегда.

пятница, 14 сентября 2012 г.

Отключение IPv6 в ядре Debian Linux

Занимаясь настройкой шлюза на Debian машине ко мне пришло понимание, что у меня присутствует лишняя функциональность в виде поддержки протокола IPv6. Заметок в интернете по этому поводу существует довольно много, но все-таки и я решил внести свою лепту.

Итак цель - отключить поддержку IPv6 в ядре Linux. Способ подходит для владельцев ядер 2.6.31 и выше. В этих ядрах предусмотрена возможность отключить IPv6 опцией при загрузке. Однако сначала необходимо убедиться что IPv6 включен. Пишем в консоли под root'ом:


# ifconfig | grep inet6

Если указанная команда ничего не вывела на экран, значит IPv6 у вас не используется, иначе читаем далее.

Если у вас установлен загрузчик GRUB Legacy(не прогрессивный но понятный), то в конфигурационном файле /boot/grub/menu.lst в опциях загрузки ядра дописываем ipv6.disable=1.

Если же вы счастливый обладатель прогрессивного загрузчика GRUB2, тогда идем в /etc/default/grub и ищем строку с опциями загрузки ядра по умолчанию (что-то вроде "quiet splash"). Дописываем к имеющимся опцию ipv6.disable=1.
Затем запускаем от root'а:

# update-grub

Затем перезагружаем компьютер и проверяем настройки с помощью утилиты ifconfig. В выводе не должно быть IPv6 адресов. 
Еще один способ проверки:

# netstat -npl | grep -E "tcp6|udp6" | wc -l

Если в выводе команды "0", значит все в порядке и IPv6 отключен.

Настройка iptables для шлюза

В предыдущей заметке мы настроили сетевые интерфейсы на компьютере шлюзе. Сегодня сделаем возможным прохождение пакетов через шлюз к клиенту. Делается это с помощью встроенного в ядро Linux файервола iptables.

Умолчальные настройки нас не устраивают. На мой взгляд лучшее решение - собрать все настройки iptables в одном файле. И перво наперво этот файл нужно создать. Все дальнейшие действия выполняются под личиной Суперпользователя.

Создаем файл /etc/init.d/rc.firewall:

# touch /etc/init.d/rc.firewall

Наш файл является сценарием оболочки, поэтому делаем его исполняемым следующей командой:

# chmod 755 /etc/init.d/rc.firewall

Чтобы все работало после перезагрузки, помещаем наш скрипт автозагрузку при помощи команды:

# update-rc.d rc.firewall start 40 S . stop 89 0 6 .

Вместо непонятных буковок "start 40 S . stop 89 0 6 ." можно написать default, но так больше контроля.

Если в дальнейшем нам понадобится удалить скрипт из автозагрузки пишем следующее:


# update-rc.d -f rc.firewall remove

Теперь можно приступить к написанию самого скрипта:

# nano /etc/init.d/rc.firewall

Для начала сообщим ядру, что оно имеет дело со сценарием. Делается это добавлением в начало файла строки

#!/bin/sh

Для начала зададим несколько переменных, исключительно для удобства редактирования и просмотра:

IPT="/sbin/iptables"    # переменная, задающая путь к файлу запуска iptables

INET_IFACE="eth0"    # ваш внешний сетевой интерфейс

Мы делаем крутую программу, поэтому реализуем возможность задавать параметры. Запихнем правила для iptables в функцию start_fw():


start_fw()
{             # начало функции

Первым делом включим перенаправление пакетов через ядро:

echo 1 > /proc/sys/net/ipv4/ip_forward

Сбросим правила и удалим цепочки:

$IPT -F
$IPT -X

Зададим политики по умолчанию:

$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

Разрешить все движения пакетов не самое удачное решение, но поскольку мой компьютер является как шлюзом так и рабочей машиной, то пускай будет так. Настройку защиты от всякого рода опасностей себя любимого мы пока не рассматриваем. Для нас важно разрешающее правило для проходящих пакетов(FORWARD), хотя и это можно настроить. Но для простейшего случая сойдет.

Ну и наконец самое главное правило:

$IPT -A POSTROUTING -t nat -s 192.168.1.0/24 -o $INET_IFACE -j MASQUERADE
}         # конец функции start_fw()

Здесь создается новое правило постмаршрутизации таблицы NAT со всей локальной сети черев внешний интерфейс. Все компьютеры локальной сети теперь имеют доступ в интернет без ограничений. Хотя имеет смысл заметить, что DC клиенты, допустим, могут соединятся только в пассивном режиме. Для работы в активном режиме необходимо настроить прозрачный NAT. Но тема пребует более глубокого осмысления.
MASQUERADE позволяет корректно работать с динамическим внешним ip адресом.

Переходим к реализации параметров. Прийдется немного попрограммировать. Пишем:


case "$1" in

Для того, чтобы наш файервол можно было запустить командой /etc/init.d/rc.firewall start пишем следующую ветвь условия case:


start)   echo -n "Starting firewall"
            start_fw
            echo "."
            ;;

Чтобы можно было остановить файервол(когда возникнет такое желание) командой /etc/init.d/rc.firewall stop пишем:


stop)    echo -n "Stopping firewall"
            iptables -F
            iptables -X
            echo "."
            ;;

Ну и, на всякий случай, защита от неправильных параметров:


*)         echo "Usage: /etc/init.d/rc.firewall start | stop"
            exit 1
            ;;
esac    # закрываем условный оператор
exit 0   # успешное завершение

Вот и все. Простейший шлюз настроен. Полностью файл /etc/init.d/rc.firewall будет выглядеть так:


#!/bin/sh

IPT="/sbin/iptables"    # переменная, задающая путь к файлу запуска iptables
INET_IFACE="eth0"    # ваш внешний сетевой интерфейс

start_fw()
{             # начало функции

echo 1 > /proc/sys/net/ipv4/ip_forward

$IPT -F
$IPT -X

$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

$IPT -A POSTROUTING -t nat -s 192.168.1.0/24 -o $INET_IFACE -j MASQUERADE
}         # конец функции start_fw()
  
case "$1" in

stop)    echo -n "Stopping firewall"
            iptables -F
            iptables -X
            echo "."
            ;;

stop)    echo -n "Stopping firewall"
            iptables -F
            iptables -X
            echo "."
            ;;

*)         echo "Usage: /etc/init.d/rc.firewall start | stop"
            exit 1
            ;;

esac    # закрываем условный оператор
exit 0   # успешное завершение

Следует также заметить, что если у вас в локальной сети не реализован DNS сервер, то в настройках клиента нужно указать DNS сервера провайдера, или, например, DNS сервер Google(8.8.8.8)

четверг, 13 сентября 2012 г.

Настройка Debian шлюза

Недавно мой сосед приобрел себе компьютер. А поскольку входной канал интернета только один(а второй заводить не резон), пришлось настраивать шлюз на домашнем компе(Debian). Решение временное, будет работать до покупки роутера.

Начинать следует с установки второй сетевой карты. Этот этап не должен вызвать затруднений: берем сетевую карту и совмещаем контактную планку с PCI разъемом материнской платы. Естественно это следует делать при отключенном электропитании ПК(глупые разработчики PCI порта не позаботились о горячем подключении :-) ).

Загружаемся и настраиваем сетевуху. Сетевая карта подключенная к Инету называется у меня eth0(адрес и настройки выдаются автоматически с привязкой к MAC адресу сетевой карты), а карта смотрящая в локальную сеть - eth1. Сетевые интерфейсы настраиваются в файле /etc/network/interfaces.

Вводим под рутом(суперпользователем, root): 

# nano /etc/network/interfaces

И приводим файл к виду:

auto lo  
iface lo inet loopback  

auto eth0 

auto eth1 
iface eth1 inet static 
address 192.168.1.1  
netmask 255.255.255.0 

Пояснения к содержимому:
  • lo, eth0, eth1 - сетевые интерфейсы: lo - интерфейс обратной связи(нам сейчас не нужен), eth0 - подключение к интернет, eth1 - в локальную сеть;
  • auto - означает, что интерфейс будет инициализирован при загрузке компьютера;
  • static - фиксированный ip-адрес(не динамический);
  • address - адрес, присваиваемый интерфейсу;
  • netmask - маска сети(для локальной сети самое оно).

После внесенных в файл изменений нужно либо перезагрузить компьютер, либо перезапустить сеть командой:

# /etc/init.d/networking restart

После всего этого локальная сеть работает, но нужно еще настроить прохождение пакетов через шлюз. Для этого используем встроенный в ядро файервол iptables, но про это в следующий раз.

По ходу дела возникло сильное желание отключить работу IPv6(ну не нахожу я ему применения), но об этом тоже в следующий раз.