Маршрутизатор интернет-провайдера

Маршрутизатор интернет-провайдера

Мы хотим добавить дополнительный сегмент сети (LAN2) и нам нужны некоторые машины в LAN1 для доступа к ресурсам в LAN2. Некоторые машины в LAN2 также должны иметь доступ к ресурсам в LAN1 и сегменте WAN. Шлюз между LAN1 и LAN2 называется "SRV-01", это двухдомный сервер Linux.

Я не могу получить доступ к LAN2 из LAN1 или к LAN1 из LAN2, ни к WAN из LAN2. Мне интересно, как заставить хосты LAN1 и LAN2 общаться друг с другом, а также как разрешить доступ к WAN с машин LAN2.

Поиск неисправностей

Я получаю следующие ответы с помощью ping:

IP (источник) ---> IP (назначение): ответ на пинг
---------------------------------------------------------------------------
192.168.5.33 (клиент на LAN1) ---> 192.168.5.8 (SRV-01:eth0) : ОК
192.168.5.33 (клиент на LAN1) ---> 10.0.2.1 (SRV-01:eth1) : НЕТ
192.168.5.33 (клиент на LAN1) ---> 10.0.2.2 (SRV-02:eth0) : НЕТ
*.*.*.*.* (SRV-01) ---> 192.168.5.33 (клиент на LAN1): ОК
*.*.*.*.* (SRV-01) ---> 10.0.2.2 (SRV-02:eth0) : ОК
10.0.2.2 (SRV-02) ---> 10.0.2.1 (SRV-01:eth1) : ОК
10.0.2.2 (SRV-02) ---> 192.168.5.8 (SRV-01:eth0) : ОК
10.0.2.2 (SRV-02) ---> 192.168.5.33 (клиент на LAN1): НЕТ

Топология сети

WAN --- (маршрутизатор интернет-провайдера) --- LAN1 --- (SRV-01) --- LAN2 --- (SRV-02) 

Маршрутизатор интернет-провайдера

Маршрутизатор интернет-провайдера (ISP) обеспечивает NAT (два сетевых адаптера) и действует как DHCP-сервер для LAN1. У нас нет доступа shell/admin к этому оборудованию.

  • xxx.xx.xx.xx/xx (eth0, WAN)
  • 192.168.5.4/24 (eth1, LAN1)

Сервер СРВ-01

SRV-01 — это двухсетевой сервер Ubuntu 14.04 (два сетевых адаптера), который будет выступать в качестве шлюза между подсетями LAN1 и LAN2.

  • 192.168.5.8/24 (eth0, LAN1)
  • 10.0.2.1/24 (eth1, LAN2)

/etc/сеть/интерфейсы

# Loopback
auto lo
iface lo inet loopback
# LAN1
auto eth0
iface eth0 inet static
    address 192.168.5.8
    netmask 255.255.255.0
    network 192.168.5.0
    broadcast 192.168.5.255
    gateway 192.168.5.4
    dns-nameservers xxx.xxx.xxx.xxx
# LAN2
auto eth1
iface eth1 inet static
    address 10.0.2.1
    netmask 255.255.255.0
    network 10.0.2.0
    broadcast 10.0.2.255
    dns-nameservers xxx.xxx.xxx.xxx

Маршрутизация

~$ netstat -r
Таблица маршрутизации IP ядра
Шлюз назначения Флаги Genmask Окно MSS irtt Iface
по умолчанию 192.168.5.4 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 * 255.255.255.0 U 0 0 0 eth1
локальная сеть * 255.255.255.0 U 0 0 0 eth0
~$ ip маршрут показать
по умолчанию через 192.168.5.4 dev eth0
10.0.2.0/24 dev eth1 proto ядро ​​область ссылка src 10.0.2.1
192.168.5.0/24 dev eth0 proto ядро ​​область ссылка источник 192.168.5.8

IP-пересылка

~$ sudo sysctl -a | grep net.ipv4.ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0

Брандмауэр

Ubuntu "Uncomplicated FireWall" (UFW) отключен на сервере "SRV-01", и все цепочки iptables имеют политику по умолчанию, установленную на ACCEPT target. Обратите внимание, что ни один пакет пока не попал в таблицу FORWARD...

~$ sudo ufw статус
Статус: неактивен
~$ sudo iptables -L -v | grep политика
Цепочка INPUT (политика ACCEPT 369 пакетов, 28278 байт)
Цепочка FORWARD (политика ACCEPT 0 пакетов, 0 байт)
Цепочка ВЫХОД (политика ПРИНЯТЬ 187 пакетов, 19740 байт)

Сервер СРВ-02

SRV-02 — это Ubuntu Server 14.04 с одним сетевым адаптером.

  • 10.0.2.2/24 (eth0, LAN2)

/etc/сеть/интерфейсы

# Обратная петля
авто ло
iface lo inet loopback
# ЛВС2
iface eth0 inet статический
    адрес 10.0.2.2
    сетевая маска 255.255.255.0
    сеть 10.0.2.0
    трансляция 10.0.2.255
    DNS-серверы имен xxx.xxx.xxx.xxx

Маршрутизация

~$ netstat -r:
Таблица маршрутизации IP ядра
Шлюз назначения Флаги Genmask Окно MSS irtt Iface
по умолчанию 10.0.2.1 0.0.0.0 UG 0 0 0 eth0
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
~$ ip маршрут показать
по умолчанию через 10.0.2.1 dev eth0
10.0.2.0/24 dev eth0 proto ядро ​​область ссылка src 10.0.2.2

Брандмауэр

Ubuntu «Uncomplicated FireWall» (UFW) отключен на сервере «SRV-02», и во всех цепочках iptables политика по умолчанию установлена ​​на ACCEPT target.

~$ sudo ufw статус
Статус: неактивен
~$ sudo iptables -L -v | grep политика
Цепочка INPUT (политика ACCEPT 0 пакетов, 0 байт)
Цепочка FORWARD (политика ACCEPT 0 пакетов, 0 байт)
Цепочка ВЫХОД (политика ПРИНИМАЕТ 0 пакетов, 0 байт)

Что я здесь упускаю? Интересно, какой статический маршрут следует добавить в SRV-01, а также правильно ли настроены шлюзы по умолчанию...

решение1

В этой настройке есть две проблемы:

  1. Хосты в LAN1 ничего не знают о сегменте LAN2. Когда вы пингуете хост в LAN1 (назовем его host1) из SRV-02, пакет будет направлен через SRV-01 и достигнет host1. Однако host1 отправит ответ на свой шлюз по умолчанию (маршрутизатор ISP), поскольку у него нет определенного маршрута к LAN2. (Маршрутизатор ISP либо a) также отправит его на свой шлюз по умолчанию, поскольку он также не знает о LAN2, либо b) отбросит пакет, поскольку он пришел из неизвестного источника, а не из его локальной сети LAN.)
  2. При попытке доступа к WAN из LAN2 пакеты будут маршрутизироваться через SRV-02 на маршрутизатор интернет-провайдера, где возможны две ситуации:
    • Маршрутизатор не будет транслировать пакет с помощью NAT, так как источник пакета (LAN2) не является его локальной сетью (это более вероятная ситуация), или
    • Маршрутизатор NAT транслирует пакет и отправляет его в Интернет. Однако, когда приходит ответ и пункт назначения транслируется обратно в адрес LAN2, пакет не будет доставлен, поскольку маршрутизатор ISP не имеет маршрута для этой сети. Пакет будет отправлен неправильно на шлюз по умолчанию (ISP).

Эти проблемы можно исправить, добавив статический маршрут к LAN2 на маршрутизатор ISP и добавив исходную конфигурацию NAT для LAN2 на SRV-01. Однако это невозможно из-за отсутствия административного доступа к маршрутизатору ISP.

Есть два решения, которые позволяют обойти эту проблему:

A. Сделать SRV-01 полноценным маршрутизатором для хостов LAN1 и LAN2

  • Добавьте еще один сетевой адаптер к SRV-01 (всего их 3)
  • Измените топологию следующим образом:

.

WAN -> ISP router -> LAN1 -> SRV-01 +-> LAN3 (for hosts originally in LAN1)
                                    +-> LAN2 -> SRV-02

По сути, мы делаем SRV-01 маршрутизатором для обоих сегментов локальной сети.

  • Это потребует перемещения хостов, изначально находившихся в LAN1, в новую подсеть LAN3 — предположим, мы используем10.0.1.0/24
  • Конфигурацию сети SRV-01 необходимо будет изменить следующим образом:

/etc/network/interfaces:

# LAN1 - to ISP router
auto eth0
iface eth0 inet dhcp
# we can even use dhcp as the IP address is not really important
# - there are no more hosts on LAN1 apart from ISP router and SRV-01

# LAN3 - for hosts originally in LAN1
iface eth1
    address 10.0.1.1
    netmask 255.255.255.0

# LAN2
iface eth2
    address 10.0.2.1
    netmask 255.255.255.0

Правила iptables для обеспечения работы доступа через WAN:

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j MASQUERADE

В качестве альтернативы, если вы решите сохранить статический IP-адрес на SRV-01 на eth0, правила можно изменить (хотя MASQUERADEони все равно будут работать):

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j SNAT --to-source 192.168.5.8
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j SNAT --to-source 192.168.5.8
  • DHCP необходимо настроить на SRV-01 на eth1 (LAN3, для хостов изначально на LAN1), а также, возможно, на eth2 (LAN2), если это необходимо. (В обоих случаях шлюзом будет локальный адрес eth1 или eth2 соответственно, но это само собой разумеется :)

Это сделает возможным взаимодействие между LAN3 и LAN2 (через SRV-01, который является шлюзом по умолчанию для обоих). Доступ к WAN также будет работать из LAN3 и LAN2 благодаря двойному источнику NAT.

B. Сделайте SRV-01 DHCP-сервером для LAN1

Этот подход не такой чистый, как выше, но немного проще. Он предполагает, что вы можете отключить DHCP на маршрутизаторе ISP

  • Отключить DHCP на маршрутизаторе интернет-провайдера
  • Настройте DHCP для LAN1 на SRV-01 и сделайте SRV-01 (192.168.5.8) шлюзом по умолчанию для LAN1
  • Настройте исходную трансляцию NAT для LAN2 на SRV-01, чтобы доступ к WAN работал из LAN2:

.

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -d 192.168.5.4 -j SNAT --to-source 192.168.5.8
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 ! -d 192.168.5.0/24 -j SNAT --to-source 192.168.5.8

Первая строка включает SNAT, чтобы хосты LAN2 могли получить доступ к маршрутизатору интернет-провайдера, а вторая строка отключает SNAT для доступа LAN2-LAN1.

Опять же, этот подход не такой чистый, как тот, что выше, поскольку в одной подсети (SRV-01, маршрутизатор ISP) находятся два маршрутизатора. Когда я сам использовал этот подход, я заметил, что мой второй маршрутизатор (SRV-01 в этом сценарии) отправлял перенаправления ICMP на маршрутизатор ISP, поскольку он видел, что клиент (хост в LAN1) и маршрутизатор восходящего потока (маршрутизатор ISP) находятся в одной и той же LAN. Это может быть нежелательным, поскольку сетевые политики, реализованные на SRV-01, можно обойти.

Надеюсь, это поможет.

Связанный контент