У меня есть один первичный сервер (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|
¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯
# 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 (Архитектура)
______________ ___________ ___________
|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) Прошу прощения за нетехнический язык, но я думаю, что слишком техническое объяснение загромождает ответ и не является строго необходимым для демонстрации концепции.