Назад | Перейти на главную страницу

Обращение к хостам с ретрансляцией DHCP

У меня есть один первичный сервер (DHCP) и один вторичный (DHCP-RELAY).

Большинство хостов обслуживаются с первичного (беспроводного), однако есть несколько (проводных), которые получают свои IP-адреса от вторичного.

Вторичные реле все DHCP трафик к основным, основным спаунам IP address, отправляет его обратно на вторичный, а затем IP передается на хост. isc-dhcp-[relay|server]:

 __________                  ___________                  ___________
|   DHCP   |<----rel.req----| DHCP-RELAY|<=====ip.req====|    Host   |
|172.16.1.1|-{172.16.1.50}->|172.16.1.12|={172.16.1.50}=>|172.16.1.50|
 ¯¯¯¯¯¯¯¯¯¯                  ¯¯¯¯¯¯¯¯¯¯¯                  ¯¯¯¯¯¯¯¯¯¯¯

DHCP-СЕРВЕР:
# ip route | grep 172
172.16.1.0/24 dev wlan5  proto kernel  scope link  src 172.16.1.1 
172.16.1.50 via 172.16.1.12 dev wlan5
DHCP-РЕЛЕ:
# ip addr | grep inet | grep 172
    inet 172.16.1.254/24 brd 172.16.1.255 scope global eth0
    inet 172.16.1.12/24 brd 172.16.1.255 scope global wlan3

# ip route | grep 172
default via 172.16.1.1 dev wlan3  metric 300 
172.16.1.0/24 dev wlan3  proto kernel  scope link  src 172.16.1.12 
172.16.1.0/24 dev eth0  proto kernel  scope link  src 172.16.1.254 
172.16.1.50 via 172.16.1.254 dev eth0

# iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 16 packets, 1293 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 6 packets, 402 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 28 packets, 1568 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 28 packets, 1568 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    7   468 SNAT       all  --  *      eth0    172.16.1.0/24        0.0.0.0/0            to:172.16.1.254

Поправьте меня, если я ошибаюсь, но, насколько мне известно, с моей текущей конфигурацией он работает таким или подобным образом:
С DHCP-сервера (172.16.1.1 <--> 172.16.1.50)

172.16.1.1---icmp.ping--->172.16.1.12
172.16.1.12---icmp.ping--->172.16.1.254
172.16.1.254---icmp.ping--->172.16.1.50
172.16.1.254<---icmp.pong---172.16.1.50
172.16.1.12<--icmp.pong----172.16.1.254
172.16.1.1<---icmp.pong---172.16.1.12

Так что я ожидал, что если я ping с настраиваемого хоста за основным сервером:
От хоста (172.16.1.100 <--> 172.16.1.50)

172.16.1.100---icmp.ping--->172.16.1.1
172.16.1.1---icmp.ping--->172.16.1.12
172.16.1.12---icmp.ping--->172.16.1.254
172.16.1.254---icmp.ping--->172.16.1.50
172.16.1.254<---icmp.pong---172.16.1.50
172.16.1.12<--icmp.pong----172.16.1.254
172.16.1.1<---icmp.pong---172.16.1.12
172.16.1.100<---icmp.pong---172.16.1.1

Но вместо этого я получаю Destination Host Unreachable...

Я должен добавить еще static route на хосте:

172.16.1.100:~# ip route add 172.16.1.50 via 172.16.1.12

Тогда все идет хорошо. А то, господа, статичных маршрутов много !!

Так что мне не хватает, есть ли лучший подход к проблеме?
Я хочу, чтобы каждый хост в сети мог связываться с любым другим хостом в той же сети, используя как можно меньше статических маршрутов.

Спасибо

Так что мне не хватает, есть ли лучший подход к проблеме? Я хочу, чтобы каждый хост в сети мог связываться с любым другим хостом в той же сети, используя как можно меньше статических маршрутов.

Вы можете использовать VLAN и соединить сегменты беспроводной сети и Ethernet вместе. С помощью этой конфигурации вы создадите один широковещательный домен, статические маршруты не требуются и нужен только один DHCP-сервер.

Со стороны перемычки есть два варианта:

  1. Установите точки доступа в режим моста и подключите их Ethernet к порту коммутатора в вашей VLAN.
  2. Позвольте всем точкам доступа достичь DHCP-сервера и добавьте туда интерфейс моста.

Я лично выбрал бы первый вариант, так как он более масштабируемый.

Вариант №1 (Архитектура)

 ______________                ___________                  ___________
|Wireless      |<==Ethernet===|Switch 1  |<====Ethernet====|Switch 2   |
|Access Point 1|=============>|on VLAN A |================>|on VLAN A  |     
 ---------------               -----------                  -----------
                                      |                             |
                                   Ethernet                    Ethernet
                                      |                             |
                                  __________                    _________
                                 | DHCP     |                  |  Wired  |
                                 | Server   |                  |  Hosts  |
                                  ----------                    ---------
                                Serves IPs for
                                subnet {172.16/16}

Тот факт, что все хосты и точки доступа подключены к одной и той же VLAN, позволяет вам связаться с ними с помощью одного DHCP-сервера без какой-либо конкретной маршрутизации, все это будет работать на уровне 2 сетевого стека.

Вариант №2 (Архитектура)

 ______________              _________________                __________
|Wireless      |<==Ethernet==|eth0|DHCP  |eth1|<==Ethernet===|Switch    |          
|Access Point 1|============>|    |Server|    |=============>|          |  
---------------              |     --------   |               ----------           
                             |    bridge0     |                    |
                              ----------------                   Ethernet
                              Only bridge0 interface               |
                              is given an IP address          __________
                              and DHCP servers is             |  Wired  |
                              configured to serve IPs         |  Hosts  |
                              on subnet {172.16/16}           -----------
                              only on bridge0 interface

bridge0 это виртуальный интерфейс, соединяющий eth0 и eth1 интерфейсы на сервере DCHP (здесь я предполагаю, что это Linux, но такая же концепция используется в других ОС). eth0 и eth1 не должны иметь собственного IP-адреса, только bridge0 должен, поскольку это единственный интерфейс, который будет видимый(1) с внешней точки зрения. Опять же, никакой статической маршрутизации не потребуется.

(1) Прошу прощения за нетехнический язык, но я думаю, что слишком техническое объяснение загромождает ответ и не является строго необходимым для демонстрации концепции.