Соединение двух офисов статическая маршрутизация без nat

В моем случае два офиса имеют vpn канал от оператора связи, который для нас выглядит как обычный патчкорд. Следовательно шифровать такой канал не обязательно, т.к. офисы имеют разные подсети нужно настроить маршрутизацию между ними. Сети абсолютно равнозначны с точки зрения предоставления доступа — и там и там находятся сервера доступ которым необходим из обоих подсетей.
Графически сетка выглядит так:

Итак в качестве GW1 и GW2 имеем два сервера CentOS. В данной статье расскажу что нужно сделать чтобы пакеты забегали из одной сети в другую.
GW1:
Включаем форвард:
#nano /etc/sysctl.conf
net.ipv4.ip_forward = 1

Следующий шаг то же самое что и первый, но без него почему-то не заработало.
#nano /etc/sysconfig/network
FORWARD_IPV4=true

Дальше настраиваем сетевые интерфейсы:
# cat ifcfg-eth0
BOOTPROTO=none
HWADDR=00:30:88:87:9a:23
TYPE=Ethernet
DEVICE=eth0
NETMASK=255.255.255.0
BROADCAST=10.99.1.255
IPADDR=10.99.1.1
NETWORK=10.99.1.0
ONBOOT=yes

#cat ifcfg-eth0:0
BOOTPROTO=none
DEVICE=eth0:0
NETMASK=255.255.255.240
IPADDR=10.20.0.1
NETWORK=10.20.0.0
TYPE=Ethernet

# cat ifcfg-eth1
BOOTPROTO=none
TYPE=Ethernet
DEVICE=eth0
NETMASK=255.255.255.240
BROADCAST=77.77.77.255
IPADDR=77.77.77.77
NETWORK=77.77.77.0
ONBOOT=yes

# cat ifcfg-eth2
BOOTPROTO=none
TYPE=Ethernet
DEVICE=eth0
NETMASK=255.255.255.240
BROADCAST=88.88.88.255
IPADDR=88.88.88.88
NETWORK=88.88.88.0
ONBOOT=yes

После всех манипуляций выполняем:
# service network restart

И переходим к настройке другого шлюза GW2:
Включаем форвард:
#nano /etc/sysctl.conf
net.ipv4.ip_forward = 1

Следующий шаг то же самое что и первый, но без него почему-то не заработало.
#nano /etc/sysconfig/network
FORWARD_IPV4=true

Дальше настраиваем сетевые интерфейсы:
# cat ifcfg-eth0
BOOTPROTO=none
HWADDR=00:30:44:22:9a:22
TYPE=Ethernet
DEVICE=eth0
NETMASK=255.255.255.0
BROADCAST=10.99.2.255
IPADDR=10.99.2.1
NETWORK=10.99.2.0
ONBOOT=yes

#cat ifcfg-eth0:0
BOOTPROTO=none
DEVICE=eth0:0
NETMASK=255.255.255.240
IPADDR=10.20.0.2
NETWORK=10.20.0.0
TYPE=Ethernet

# cat ifcfg-eth1
BOOTPROTO=none
TYPE=Ethernet
DEVICE=eth0
NETMASK=255.255.255.240
BROADCAST=99.99.99.255
IPADDR=99.99.99.99
NETWORK=99.99.99.0
ONBOOT=yes

После всех манипуляций выполняем:
# service network restart

В итоге с первого шлюза должен проходить ping 10.20.0.2, а со второго соответственно 10.20.0.1 уже хорошо, но нам нужно чтобы сети 10.99.1.0/24 и 10.99.2.0/24 видели друг друга.
GW1:
# route
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
77.77.77.70     *               255.255.255.240 U     0      0        0 eth1
88.88.88.80     *               255.255.255.240 U     0      0        0 eth2
10.99.1.0       *               255.255.255.0   U     0      0        0 eth0
10.20.0.0       *               255.255.255.240 U     0      0        0 eth0
default         77-77-77-71.    0.0.0.0         UG    0      0        0 eth1

Получается у нас GW1 «не знает» о другой подсети, так давайте скажем куда ему отправлять пакеты в другую подсеть.
# route add -net 10.99.2.0/24 gw 10.20.0.2
# route 
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
77.77.77.70     *               255.255.255.240 U     0      0        0 eth1
88.88.88.80     *               255.255.255.240 U     0      0        0 eth2
10.99.1.0       *               255.255.255.0   U     0      0        0 eth0
10.99.2.0       10.20.0.2       255.255.255.0   U     0      0        0 eth0
10.20.0.0       *               255.255.255.240 U     0      0        0 eth0
default         77-77-77-71.    0.0.0.0         UG    0      0        0 eth1

Собственно туда мы можем достучаться, переходим на GW2 и делаем практически тоже самое.
# route
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
99.99.99.90     *               255.255.255.240 U     0      0        0 eth1
10.99.2.0       *               255.255.255.0   U     0      0        0 eth0
10.20.0.0       *               255.255.255.240 U     0      0        0 eth0
default         99-99-99-91.    0.0.0.0         UG    0      0        0 eth1

Получается у нас GW2 «не знает» о другой подсети, так давайте скажем куда ему отправлять пакеты в другую подсеть.
# route add -net 10.99.1.0/24 gw 10.20.0.1
# route 
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
99.99.99.90     *               255.255.255.240 U     0      0        0 eth1
10.99.2.0       *               255.255.255.0   U     0      0        0 eth0
10.99.1.0       10.20.0.1       255.255.255.0   U     0      0        0 eth0
10.20.0.0       *               255.255.255.240 U     0      0        0 eth0
default         99-99-99-91.    0.0.0.0         UG    0      0        0 eth1

Ну собственно все должно быть хорошо и пакеты из одной сети в другую должны беспрепятственно ходить если что проверьте файерфол ну и на всякий случай перезагрузите сервера. Но перед перезагрузкой нужно подправить файлик /etc/sysconfig/network-scripts/route-eth0
На GW1 пишем
10.99.2.0 via 10.20.0.2
На GW2 пишем
10.99.1.0 vis 10.20.0.1
Маршрутизация подымется автоматом после перезагрузки сервера.
Данная схема хороша, но есть недостаток при увеличении количества шлюзов, разрастаются правила маршрутизации и не удобно следить за правилами на всех шлюзах. Выход протоколы динамической маршрутизации — о них в других статьях.
  • 0
  • 30 декабря 2011, 13:24
  • admin

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Яндекс.Метрика