Dhcp

Сервер
Нету в составе ОС и надо ставить (до 7 версии, похоже, был) make install clean -C /usr/ports/net/isc-dhcp3-server/ с настройками по умолчанию cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf

Указать сеть, диапазон адресов выдаваемых, ДНС и шлюз. Другие строки можно не трогать. subnet 172.16.0.0 netmask 255.255.255.0 { range 172.16.0.2 172.16.0.20; option domain-name-servers 89.250.0.2; option routers 172.16.0.1; } Отредактировать /etc/rc.conf dhcpd_enable="YES"                         # dhcpd enabled? dhcpd_flags="-q"                           # command option(s) dhcpd_conf="/usr/local/etc/dhcpd.conf"     # configuration file dhcpd_ifaces="stge0"                            # ethernet interface(s) dhcpd_withumask="022"                      # file creation mask Запуск /usr/local/etc/rc.d/isc-dhcpd start

Клиент
Скрипт не работает почему-то. Поэтому вручную. dhclient age0

echo ifconfig_re0="DHCP" >> /etc/rc.conf

dhclient Затирает /etc/resolv.conf

/etc/dhclient-enter-hooks add_new_resolv_conf { # We don't want /etc/resolv.conf changed # So this is an empty function return 0 }

/etc/netstart restart  devd already running? (pid=729). DHCPDISCOVER on age0 to 255.255.255.255 port 67 interval 7 DHCPOFFER from 10.200.0.230 DHCPREQUEST on age0 to 255.255.255.255 port 67 DHCPACK from 10.200.0.230 bound to 89.250.8.14 -- renewal in 1800 seconds. 

ifconfig age0  age0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4> ether 00:1e:8c:8c:63:da inet 89.250.8.14 netmask 0xfffffe00 broadcast 89.250.9.255 media: Ethernet autoselect (100baseTX <full-duplex>) status: active </PRE>

При старте (из dmesg)  age0: interrupt moderation is 100 us. age0: interrupt moderation is 100 us. DHCPREQUEST on age0 to 255.255.255.255 port 67

DHCPACK from 10.200.0.230

age0: interrupt moderation is 100 us. age0: interrupt moderation is 100 us. bound to 89.250.8.14 -- renewal in 1800 seconds. </PRE>

Чтобы запросить повторно адрес и другие параметры без перезагрузки системы или перетыкания кабеля (?) надо выполнить
 * Повторный запрос адреса

Недостаточно - запросится только IP, а gw останется прежним. Но для первичногоп получения адреса вроде такой способ годится. dhclient age0

Instead of killing the dhclient process in order to run dhclient again to get a new lease, just release the lease.

setenv interface age0 setenv reason RENEW dhclient-script  dhclient: New IP Address (age0): dhclient: New Subnet Mask (age0): dhclient: New Broadcast Address (age0): dhclient: New Routers (age0): </PRE>

According to dhclient(8), OMAPI is used for this sort of functionality, and omshell(1) should be able to do this kind of manipulation (including "suspending" the agent instead of stopping it). You do need to set up authentication first, even for local use. Otherwise, you can always just kill and restart the dhclient.

Миграция со статического адреса
В rc.conf заменить IP на DHCP, убрать явное указание gateway ifconfig_age0="DHCP" вместо ifconfig_age0="inet 10.80.192.9 netmask 255.255.192.0
 * 1) defaultrouter="10.80.192.1"

resolv.conf сам пересоздается и его изменять не требуется.

Достаточно в MS активировать полученрие всего автоматом  C:\Documents and Settings\sonyra>ipconfig /all
 * Использование

Настройка протокола IP для Windows

Имя компьютера. . . . . . . . . : noisyfan Основной DNS-суффикс. . . . . . :      Тип узла. . . . . . . . . . . . . : неизвестный IP-маршрутизация включена. . . . : нет WINS-прокси включен. . . . . . . : нет Порядок просмотра суффиксов DNS. : example.org

Подключение по локальной сети - Ethernet адаптер:

DNS-суффикс этого подключения. . : example.org Описание. . . . . . . . . . . . : 3Com EtherLink XL 10/100 PCI For Complete PC Management NIC (3C905C-TX) Физический адрес. . . . . . . . . : 00-50-04-D1-14-65 Dhcp включен. . . . . . . . . . . : да Автонастройка включена. . . . . : да IP-адрес. . . . . . . . . . . . : 172.16.0.2      Маска подсети. . . . . . . . . . : 255.255.255.0      Основной шлюз. . . . . . . . . . : 172.16.0.1      DHCP-сервер. . . . . . . . . . . : 172.16.0.1      DNS-серверы. . . . . . . . . . . : 89.250.0.2      Аренда получена. . . . . . . . . : 31 декабря 2010 г. 17:34:10      Аренда истекает. . . . . . . . . : 31 декабря 2010 г. 17:44:10 </PRE>

При установке добавляется группа и пользователь "dhcpd".
 * Дополнения

для работы нужен модуль bpf -- Berkeley Packet Filter?

 are also supported:
 * If compiled with paranoia support (the default), the following lines

dhcpd_chuser_enable="YES"                  # runs w/o privileges? dhcpd_withuser="dhcpd"                     # user name to run as            dhcpd_withgroup="dhcpd"                     # group name to run as            dhcpd_chroot_enable="YES"                   # runs chrooted? dhcpd_devfs_enable="YES"                 # use devfs if available? dhcpd_makedev_enable="YES"               # use MAKEDEV instead? dhcpd_rootdir="/var/db/dhcpd"              # directory to run in            dhcpd_includedir="<some_dir>"               # directory with config- files to include dhcpd_flags="-early_chroot"                # needs full root

WARNING: -early_chroot requires a jail(8) like environment to work.

WARNING: dhcpd_devfs_enable and dhcpd_makedev_enable are mutually exclusive dhcpd_makedev_enable make NO sense on FreeBSD 5.x and up!

also supported (-early_chroot and dhcpd_chroot_enable=YES are implied):
 * If compiled with jail support (the default), the following lines are

dhcpd_jail_enable="YES"                    # runs imprisoned? dhcpd_hostname=" "                # jail hostname dhcpd_ipaddress=" "             # jail ip address

WARNING: dhcpd_rootdir needs to point to a full jail(8) environment.

/usr/local/etc/dhcpd.conf instead which is always copied where needed upon startup.
 * WARNING: never edit the chrooted or jailed dhcpd.conf file but

</PRE>