В этом руководстве я опишу как настроить полный 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

На этом все, задавайте вопросы в комментариях если что либо не ясно.
Надеюсь вам пригодится данный материал.

Anti-Spam Protection by WP-SpamFree