Блог ИТ склеротика. Настройка NAT по принципу сеть в сеть при помощи iptables NETMAP

Страницы

Расширенный поиск в статьях блога

1 июня 2012 г.

Настройка NAT по принципу сеть в сеть при помощи iptables NETMAP


netmap
 
В этом руководстве я опишу как настроить полный NAT из одной сети в другую, на примере двух офисных сетей. Для настройки данного решения вам понадобится iptables с поддержкой NETMAP и пакет iproute2 для настройки маршрутизации. Я настраивал эту схему на базе Linux ubuntu 8.04 server, iptables v 1.4.7 и iproute2 v ss071016. Кратко опишу, что же такое патч NETMAP для iptables, он позволяет нам делать двухстороннюю трансляцию сетей в другие сети один в один, например транслировать сеть 1.1.1.1/24 в сеть 2.2.2.2/24, и обратно, транслируя айпи адрес 1.1.1.89/32 в айпи 2.2.2.89/32 и тд.

Начнем с разбора схемы сетей на базе которых я настраивал NETMAP NAT, она показана на рисунке ниже, обозначения на котором я буду использовать как примеры.
netmap_scheme
Разберем схему с рисунка:
Есть роутер с Linux, фаерволом и несколькими интерфейсами, он обслуживает офис номер один
Так же есть роутер который обслуживает другую офисную сеть, на чем он сделан значение не имеет
За обоими роутерами у нас есть сеть 10.10.0.0/24
Нам необходимо сделать так, чтобы из офиса номер один, который обслуживает Linux роутер были доступны обе сети 10.10.0.0/24, но так как они имеют пересечения адресов без NETMAP это невозможно, поэтому сеть 10.10.0.0/24 расположенную в офисе номер два мы будем транслировать в сеть 192.168.100.0/24.
Интерфейс на Linux роутере для соединений сетей двух офисов имеет имя eth3 и айпи адрес 192.168.2.2, айпи второго офиса на другом конце 192.168.2.1.
Начнем настройку с маршрутизации.
Создадим отдельную таблицу для корректной маршрутизации пакетов с источником 10.10.0.0/24 пришедших к нам с интерфейса eth3, и назовем ее ROFFICE, сделать это можно внеся изменения в файл /etc/iproute2/rt_tables, ниже приведен пример файла с внесенными изменениями
Код:
#
# reserved values
#
256 ROFFICE
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
Затем нам надо создать правила для маршрутизации по этой таблице, в iptables мы будем маркировать пакеты для дальнейшего их направления в созданную нами таблицу ROFFICE
Код:
ip ru add from 192.168.21.2 lookup ROFFICE prio 1
ip ru add fwmark 0x2 lookup ROFFICE prio 2
Добавим шлюз по умолчанию и маршруты на нужные сети в таблицу ROFFICE
Код:
ip ro add default via 192.168.21.1 dev eth3 table ROFFICE
ip ro add 192.168.100.0/24 via 192.168.21.1 dev eth3 table ROFFICE
ip ro add 10.10.0.0/24 via 192.168.21.1 dev eth3 table ROFFICE
Теперь перейдем к настройке iptables, необходимо настроить маркировку пакетов, и затем трансляцию сетей при помощи NETMAP
Код:
#Маркируем пакеты направленные от нас на адреса сети для трансляции (192.168.100.0/24) и пакеты пришедшие с интерфейса eth3 меткой 2
iptables -t mangle -A PREROUTING -d 192.168.100.0/24 -j MARK --set-mark 2
iptables -t mangle -A POSTROUTING -o eth3 -j MARK --set-mark 2
# Затем правила трансляции, обратите внимание, адрес назначения подменятся в PREROUTING, а адрес источника подменяется в POSTROUTING
iptables -t nat -A PREROUTING -d 192.168.100.0/24 -j NETMAP --to 10.129.7.0/24
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -j NETMAP --to 192.168.19.0/24
Теперь можно проверить работу нашей трансляции, например вам надо попасть на веб сервер второго офиса, он имеет айпи адрес 10.10.0.50,находясь в офисе номер один нам надо будет набрать в адресной строке адрес 192.168.100.50
На этом все, задавайте вопросы в комментариях если что либо не ясно.
Надеюсь вам пригодится данный материал.

.

Счетчик тИЦ и PR Яндекс.Метрика Msn bot last visit powered by MyPagerank.NetYahoo bot last visit powered by MyPagerank.Net ping fast  my blog, website, or RSS feed for Free