Как я настраивал себе сервер на FreeBSD (часть 2)
Начиная вторую статью про настройку сервера на FreeBSD, хотелось бы пожелать вам терпения, внимательности и удачи, так как сделать предстоит многое. К тому же я все-таки определился с названием серии статей, теперь она называется так - " Как я настраивал себе сервер на FreeBSD", ну а первая статья останется со старым названием. Сегодня мы настроим Sudo, сеть, и начнем раздавать интернет внутрь. Адреса клиентам будут раздаваться автоматически, для чего будет настроен DHCP. Что ж, а теперь перейдем к основной части статьи.
Начнем мы с настройки доступа в сеть. Для этого вводим в консоли сервера:
ifconfig
И наблюдаем следующий результат:
dc0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80008<VLAN_MTU,LINKSTATE>
ether 00:80:ad:8d:20:2c
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=3808<VLAN_MTU,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
ether 00:0a:cd:0a:9a:de
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x6
inet 127.0.0.1 netmask 0xff000000
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
Нас же интересуют только два сетевых интерфейса, так как третий и четвертый - виртуальные (lo0, plip0). Названия интерфейсов зависят от модели сетевой карты, а значит и от использующихся драйверов. У меня это dc0 и rl0. Итак, rl0 у меня смотрит в интернет и будет иметь ip-адрес, выданный сервером dhcp провайдера (в моем случае - это мой роутер), а dc0 - в локальную сеть (192.168.0.1).
Определяемся, получаем ли мы данные от провайдер по dhcp или же прописываем вручную. Открываем файл rc.conf
при помощи редактора vim, давайте приучаться, также советую прочитать руководство по vim.
vi /etc/rc.conf
Чтобы начать редактирование нажмите i, чтобы перейти в командную консоль - Esc. Нас интересует строка:
ifconfig_rl0=" "
если получаем данные по dhcp, приводим ее к такому виду:
ifconfig_rl0="DHCP"
В противном случае к такому:
ifconfig_rl0="inet 192.168.4.255 netmask 255.255.255.0"
для выхода и сохранения нажимаем Esc и вводим:
:wq!
А для указания DNS-серверов правим файлик resolv.conf
vi /etc/resolv.conf
вводя следующее:
nameserver 192.168.4.1
За одним пропишем и второй (внутренний) интерфейс в rc.conf
:
ifconfig_dc0="inet 192.168.0.1 netmask 255.255.255.0"
Перезагружаем сервер.
Чтобы проверить работоспособность настроек и наличие интернета на сервере, вводим:
ping -c5 google.com
ответ должен быть примерно таким:
PING google.com (173.194.35.227): 56 data bytes
64 bytes from 173.194.35.227: icmp_seq=0 ttl=48 time=45.037 ms
64 bytes from 173.194.35.227: icmp_seq=1 ttl=48 time=48.868 ms
64 bytes from 173.194.35.227: icmp_seq=2 ttl=48 time=66.692 ms
64 bytes from 173.194.35.227: icmp_seq=3 ttl=48 time=49.449 ms
64 bytes from 173.194.35.227: icmp_seq=4 ttl=48 time=38.873 ms
--- google.com ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 38.873/49.784/66.692/9.257 ms
Если же сказано, что хост недоступен и 100% ошибок, то проверяйте настройки сети. А если доступен, то идем дальше.
Теперь надо настроить Sudo. По-умолчанию sudo не установлено, а значит нам придется разбираться, как ставить порты. Есть два способа это сделать, но я предлагаю этот:
pkg_add -r sudo
После запуска данной команды произойдет поиск и загрузка всех необходимых программ, библиотек и так далее, а также их установка. После установки вводим:
visudo
находим и раскомментируем строчку:
%wheel ALL=(ALL) ALL
сохраняем. Теперь наш пользователь, не root, получил права sudo.
Перейдем к настройке DHCP и NATD.
Теперь нам надо установить dhcpd:
pkg_add -r isc-dhcp42-server
После установки копируем конфиг /usr/local/etc/dhcpd.conf.sample
в /usr/local/etc/dhcpd.conf
перед тем как его редактировать:
cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf
vi /usr/local/etc/dhcpd.conf
и приводим его примерно к следующему виду:
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
# option definitions common to all supported networks...
option domain-name "home.ti";
option domain-name-servers 192.168.4.1;
default-lease-time 3600;
max-lease-time 7200;
# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#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;
# This is a very basic subnet declaration.
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.15 192.168.0.60;
option routers 192.168.0.1;
}
Сохраняем все это добро и идем править rc.conf
, добавляя в него следующие строки:
dhcpd_enable="YES"
dhcpd_ifaces="dc0"
gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="rl0"
natd_flags=" "
А также нам нужно собрать ядро со следующими включенными параметрами:
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE
Здесь же, как это делается, я описывать не буду, так-как это подробно рассмотрено тут. Но, сразу предупреждаю, что если вы допустите ошибку и не правильно пересоберете ядро, то вам придется связываться с технической поддержкой вашего хостинга, разве только это не сервер стоящий у вас под боком. После сборки ядра перезагружаетесь и готово. Теперь интернет есть не только на сервере, но и на всех клиентах, которые подключены к серверу. Пока что я оставляю ipfw с правилами разрешающими все, позже, возможно, и добавлю определенные запреты. А пока, все.
Комментарии
# - Гость, 22.08.2012 в 20:36
И сколько примерно будет статей?
# - cheshir, 23.08.2012 в 08:40, в ответ на комментарий
пока не знаю, сколько получится)
# - Гость, 24.08.2012 в 15:28
Нужно просто
:wq
.# - cheshir, 25.08.2012 в 06:13, в ответ на комментарий
в некоторых случаях, файл имеет статус read only, и чтобы сохранить изменения в нем, нужен "!"
Добавить комментарий