Вот и дошли руки до dhcp с поддержкой option 82. Что за опция объяснять не стану, как говорится, кто в теме, тот поймет.
И так. Программно-аппаратный комплекс:
Foudry BigIron 8000 + B8GMR4 - как router;
SNR-S2950-24G - как коммутатор доступа;
Сервер с FreeBSD 8.3 + isc-dhcp42-server - как, собственно, сервер;
Любой ноутбук с установленной ОС - как клиентская машина.
Приступим.
Схема у нас такова:
в сети 4 устройства (см выше), 2 vlan'а (1 - vlan управления с серверами, 1001 - vlan для клиентов), dhcp-сервер (ip = 10.10.20.31) подключен в 1 vlan, порт 8/8 Foundry BigIron 8000 соединен с 1/26 портом SNR. Клиент с Windows подключен в 1/1 порт SNR. Адресное пространство для vlan 1001 - 10.90.1.0/24
Теперь о конфигах.
Конфиг Foundry BigIron 8000 для 1 и 1001 vlan + router interface:
vlan 1 by port
tagged ethe 1/2 to 1/8 ethe 2/4 to 2/8 ethe 3/1 to 3/23 ethe 4/24 ethe 8/1 to 8/8
untagged ethe 1/1 ethe 2/2 to 2/3 ethe 3/24 ethe 4/2 to 4/19 ethe 5/13 to 5/14 ethe 5/17 ethe 5/19 to 5/20
router-interface ve 10
!
vlan 1001 by port
tagged ethe 3/15 ethe 8/8
router-interface ve 499
!
...
interface ve 10
ip address 10.10.0.1 255.255.0.0
!
interface ve 499
ip access-group 110 in
ip address 10.90.1.1 255.255.255.0
ip helper-address 1 10.10.20.31
!
Конфиг SNR-S2950-24G:
!
version 12.1
no service pad
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname test
!
enable secret 5 $1$uhLK$u8PXnegpvD0iP1z12viFC/
enable password laa88rf
!
ip subnet-zero
ip dhcp relay information option
ip dhcp relay forward spanning-tree
!
ip dhcp snooping vlan 1001
ip dhcp snooping
ip ssh time-out 120
ip ssh authentication-retries 3
vtp domain CDP-LAN
vtp mode transparent
!
spanning-tree mode pvst
no spanning-tree optimize bpdu transmission
spanning-tree extend system-id
!
!
!
!
vlan 1000-1001
!
interface FastEthernet0/1
switchport access vlan 1001
ip dhcp snooping limit rate 202
!
interface FastEthernet0/2
switchport access vlan 1001
ip dhcp snooping limit rate 202
!
...
!
interface FastEthernet0/46
switchport access vlan 1001
ip dhcp snooping limit rate 202
!
interface FastEthernet0/47
switchport access vlan 1001
ip dhcp snooping limit rate 202
!
interface FastEthernet0/48
switchport access vlan 1001
ip dhcp snooping limit rate 202
!
interface GigabitEthernet0/1
switchport trunk native vlan 1000
switchport trunk allowed vlan 1,1001
switchport mode trunk
ip dhcp snooping trust
!
interface GigabitEthernet0/2
switchport trunk native vlan 1000
switchport trunk allowed vlan 1,1001
switchport mode trunk
ip dhcp snooping trust
!
interface Vlan1
ip address 10.10.10.56 255.255.0.0
no ip route-cache
!
ip http server
no cdp run
!
line con 0
line vty 0 4
password laa88rf
login
line vty 5 15
password laa88rf
login
!
!
end
И так. Программно-аппаратный комплекс:
Foudry BigIron 8000 + B8GMR4 - как router;
SNR-S2950-24G - как коммутатор доступа;
Сервер с FreeBSD 8.3 + isc-dhcp42-server - как, собственно, сервер;
Любой ноутбук с установленной ОС - как клиентская машина.
Приступим.
Схема у нас такова:
в сети 4 устройства (см выше), 2 vlan'а (1 - vlan управления с серверами, 1001 - vlan для клиентов), dhcp-сервер (ip = 10.10.20.31) подключен в 1 vlan, порт 8/8 Foundry BigIron 8000 соединен с 1/26 портом SNR. Клиент с Windows подключен в 1/1 порт SNR. Адресное пространство для vlan 1001 - 10.90.1.0/24
Теперь о конфигах.
Конфиг Foundry BigIron 8000 для 1 и 1001 vlan + router interface:
vlan 1 by port
tagged ethe 1/2 to 1/8 ethe 2/4 to 2/8 ethe 3/1 to 3/23 ethe 4/24 ethe 8/1 to 8/8
untagged ethe 1/1 ethe 2/2 to 2/3 ethe 3/24 ethe 4/2 to 4/19 ethe 5/13 to 5/14 ethe 5/17 ethe 5/19 to 5/20
router-interface ve 10
!
vlan 1001 by port
tagged ethe 3/15 ethe 8/8
router-interface ve 499
!
...
interface ve 10
ip address 10.10.0.1 255.255.0.0
!
interface ve 499
ip access-group 110 in
ip address 10.90.1.1 255.255.255.0
ip helper-address 1 10.10.20.31
!
Конфиг SNR-S2950-24G:
!
no service password-encryption
!
hostname Switch
sysLocation laa88rf
sysContact laa88rf
!
username admin privilege 15 password 0 admin
username laa88rf privilege 15 password 0 laa88rf
username laa88rf privilege 15 password 0 laa88rf
!
!
!
service dhcp
!
ip forward-protocol udp bootps
!
ip dhcp snooping enable
ip dhcp snooping vlan 1001
ip dhcp snooping binding enable
!
ip dhcp snooping information enable
ip dhcp snooping information option subscriber-id format hex
!
!
!
!
!
!
sflow version 0
!
!
vlan 1;1000-1001
!
Interface Ethernet1/1
switchport access vlan 1001
ip dhcp snooping binding user-control
ip dhcp snooping binding user-control max-user 1
!
...
!
Interface Ethernet1/23
switchport access vlan 1001
ip dhcp snooping binding user-control
ip dhcp snooping binding user-control max-user 1
!
Interface Ethernet1/24
!
Interface Ethernet1/25
switchport mode trunk
switchport trunk allowed vlan 1;1001
switchport trunk native vlan 1000
ip dhcp snooping trust vlan 1001
!
Interface Ethernet1/26
switchport mode trunk
switchport trunk allowed vlan 1;1001
switchport trunk native vlan 1000
ip dhcp snooping trust vlan 1001
!
interface Vlan1
ip address 10.10.4.43 255.255.0.0
!
interface Vlan1001
!
!
no login
!
!
end
Конфиг dhcp-сервера:
# dhcpd.conf
## Sample configuration file for ISC dhcpd
## option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers 8.8.8.8;
default-lease-time 600;
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;
local-address 10.10.20.31;
# No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology.shared-network
mysubnets { subnet 10.10.0.0 netmask 255.255.0.0 { }
if exists agent.remote-id { log ( info, concat( "Switch MAC:", binary-to-ascii(16, 8, ":", option agent.remote-id), "Switch port:", binary-to-ascii(10, 8, ":", option agent.circuit-id) )); } class "sw01-p01" { match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="0:3:f:27:a6:8a" and binary-to-ascii( 10, 8, ":", suffix(option agent.circuit-id, 1) ) = "1"; } class "sw01-p02" { match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="0:3:f:27:a6:8a" and binary-to-ascii( 10, 8, ":", suffix(option agent.circuit-id, 1) ) = "2"; } subnet 10.90.1.0 netmask 255.255.255.0 { option routers 10.90.1.1; option subnet-mask 255.255.255.0; authoritative; pool { range 10.90.1.2; allow members of "sw01-p01"; } pool { range 10.90.1.3; allow members of "sw01-p02"; } }
}
## Sample configuration file for ISC dhcpd
## option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers 8.8.8.8;
default-lease-time 600;
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;
local-address 10.10.20.31;
# No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology.shared-network
mysubnets { subnet 10.10.0.0 netmask 255.255.0.0 { }
if exists agent.remote-id { log ( info, concat( "Switch MAC:", binary-to-ascii(16, 8, ":", option agent.remote-id), "Switch port:", binary-to-ascii(10, 8, ":", option agent.circuit-id) )); } class "sw01-p01" { match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="0:3:f:27:a6:8a" and binary-to-ascii( 10, 8, ":", suffix(option agent.circuit-id, 1) ) = "1"; } class "sw01-p02" { match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="0:3:f:27:a6:8a" and binary-to-ascii( 10, 8, ":", suffix(option agent.circuit-id, 1) ) = "2"; } subnet 10.90.1.0 netmask 255.255.255.0 { option routers 10.90.1.1; option subnet-mask 255.255.255.0; authoritative; pool { range 10.90.1.2; allow members of "sw01-p01"; } pool { range 10.90.1.3; allow members of "sw01-p02"; } }
}
Конфиг Cisco WS-C2950G-48E:
!
version 12.1
no service pad
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname test
!
enable secret 5 $1$uhLK$u8PXnegpvD0iP1z12viFC/
enable password laa88rf
!
ip subnet-zero
ip dhcp relay information option
ip dhcp relay forward spanning-tree
!
ip dhcp snooping vlan 1001
ip dhcp snooping
ip ssh time-out 120
ip ssh authentication-retries 3
vtp domain CDP-LAN
vtp mode transparent
!
spanning-tree mode pvst
no spanning-tree optimize bpdu transmission
spanning-tree extend system-id
!
!
!
!
vlan 1000-1001
!
interface FastEthernet0/1
switchport access vlan 1001
ip dhcp snooping limit rate 202
!
interface FastEthernet0/2
switchport access vlan 1001
ip dhcp snooping limit rate 202
!
...
!
interface FastEthernet0/46
switchport access vlan 1001
ip dhcp snooping limit rate 202
!
interface FastEthernet0/47
switchport access vlan 1001
ip dhcp snooping limit rate 202
!
interface FastEthernet0/48
switchport access vlan 1001
ip dhcp snooping limit rate 202
!
interface GigabitEthernet0/1
switchport trunk native vlan 1000
switchport trunk allowed vlan 1,1001
switchport mode trunk
ip dhcp snooping trust
!
interface GigabitEthernet0/2
switchport trunk native vlan 1000
switchport trunk allowed vlan 1,1001
switchport mode trunk
ip dhcp snooping trust
!
interface Vlan1
ip address 10.10.10.56 255.255.0.0
no ip route-cache
!
ip http server
no cdp run
!
line con 0
line vty 0 4
password laa88rf
login
line vty 5 15
password laa88rf
login
!
!
end
Теперь на что следует обратить внимание:
1. ip helper-address 1 10.10.20.31 - адрес сервера указан на L3(!) интерфейсе, для удобства, а не как это предлагается некоторыми администраторами в секции vlan конфига коммутатора.
2. В конфиге dhcp-сервера, "0:3:f:27:a6:8a" - есть mac-адрес SNR-S2950-24G (коммутатора).
3. В конфиге dhcp-сервера, "1", "2" - номера портов.
4. В конфиге cisco, ip dhcp snooping trust - так сказать, доверенный порт для передачи dhcp запросов/ответов. Если не указать его, то к dhcp-серверу никаких запросов не уйдет.
5. Опять же, cisco. Коммутатор сообщает серверу что клиент подключен (ВНИМАНИЕ) в предыдущий порт. Поясню. Клиента подключаем в 12 порт, а коммутатор сообщает, что клиент подключен в 11 порт. Во всяком случае так в моей версии (c2950-i6k2l2q4-mz.121-22.EA13.bin).
3. В конфиге dhcp-сервера, "1", "2" - номера портов.
4. В конфиге cisco, ip dhcp snooping trust - так сказать, доверенный порт для передачи dhcp запросов/ответов. Если не указать его, то к dhcp-серверу никаких запросов не уйдет.
5. Опять же, cisco. Коммутатор сообщает серверу что клиент подключен (ВНИМАНИЕ) в предыдущий порт. Поясню. Клиента подключаем в 12 порт, а коммутатор сообщает, что клиент подключен в 11 порт. Во всяком случае так в моей версии (c2950-i6k2l2q4-mz.121-22.EA13.bin).
На этом, пока, всё. Если будет что-то новое появляться, а именно:
- настройка на работу с коммутаторами d-link;
- прочие проблемы, которые возникают
будут описаны тут.