NAT для части сети (Настроить NAT для куска сети.)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
bool
Сообщения: 4
ОС: openSuSE 10.2

NAT для части сети

Сообщение bool »

Всем здраствуйте!
Описание:
Есть локальная сеть 192.168.0.0/24. Есть шлюз на котором 3 сетевые карты. Одна смотрит внутрь, остальные две в мир, разные провайдеры.
Задача такова:
Поднять NAT для части сети, например, для 192.168.0.1-192.168.0.10 - выход через одного провайдера, для 192.168.0.240-192.168.0.250 - через другого. Оставшийся кусок сети остается без NAT.

Подскажите, как это должно выглядеть и как реализовать будет лучше.
Мнения автора может не совпадать с его точкой зрения. (с) В. Пелевин
Спасибо сказали:
Аватара пользователя
Olden Gremlin
Сообщения: 365
Статус: RAP22-RIPE
ОС: Debian GNU/Linux Wheezy

Re: NAT для части сети

Сообщение Olden Gremlin »

bool писал(а):
26.12.2006 10:46
Описание:
Есть локальная сеть 192.168.0.0/24. Есть шлюз на котором 3 сетевые карты. Одна смотрит внутрь, остальные две в мир, разные провайдеры.
Задача такова:
Поднять NAT для части сети, например, для 192.168.0.1-192.168.0.10 - выход через одного провайдера, для 192.168.0.240-192.168.0.250 - через другого. Оставшийся кусок сети остается без NAT.
Подскажите, как это должно выглядеть и как реализовать будет лучше.


Конечно изврат... Было бы намного лучше разбить на подсети... Но...
Все достаточно просто...
Общий принцип таковой:

Код: Выделить всё

iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth1 -j SNAT --to-source 111.111.111.111
...
iptables -t nat -A POSTROUTING -s 192.168.0.10 -o eth1 -j SNAT --to-source 111.111.111.111
iptables -t nat -A POSTROUTING -s 192.168.0.240 -o eth2 -j SNAT --to-source 222.222.222.222
...
iptables -t nat -A POSTROUTING -s 192.168.0.250 -o eth2 -j SNAT --to-source 222.222.222.222
...
iptables -t filter -A FORWARD -i eth0 -s 192.168.0.1 -o eth1 -j ACCEPT
iptables -t filter -A FORWARD -o eth0 -d 192.168.0.1 -i eth1 -j ACCEPT
...
iptables -t filter -A FORWARD -i eth0 -s 192.168.0.10 -o eth1 -j ACCEPT
iptables -t filter -A FORWARD -o eth0 -d 192.168.0.10 -i eth1 -j ACCEPT
...
iptables -t filter -A FORWARD -i eth0 -s 192.168.0.240 -o eth2 -j ACCEPT
iptables -t filter -A FORWARD -o eth0 -d 192.168.0.240 -i eth2 -j ACCEPT
...
iptables -t filter -A FORWARD -i eth0 -s 192.168.0.250 -o eth3 -j ACCEPT
iptables -t filter -A FORWARD -o eth0 -d 192.168.0.250 -i eth3 -j ACCEPT
...
iptables -t filter -A FORWARD -i eth0 -s 192.168.0.0/24 -j DROP
iptables -t filter -A FORWARD -o eth0 -d 192.168.0.0/24 -j DROP
...

Остально по вкусу... Не забыть обильно смазать кетчупом ;)
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
Спасибо сказали:
Аватара пользователя
bool
Сообщения: 4
ОС: openSuSE 10.2

Re: NAT для части сети

Сообщение bool »

Ага.
Это понятно.
Но теперь проблема в маршрутизации.
Не могу сообразить, как она должна выглядеть.
Ведь НАТятся пакеты уже после принятия решения о маршрутизации.
Мнения автора может не совпадать с его точкой зрения. (с) В. Пелевин
Спасибо сказали:
Аватара пользователя
Olden Gremlin
Сообщения: 365
Статус: RAP22-RIPE
ОС: Debian GNU/Linux Wheezy

Re: NAT для части сети

Сообщение Olden Gremlin »

bool писал(а):
26.12.2006 13:52
Ага.
Это понятно.
Но теперь проблема в маршрутизации.
Не могу сообразить, как она должна выглядеть.
Ведь НАТятся пакеты уже после принятия решения о маршрутизации.


Смотрим в сторону пакета iproute.
Желательно при этом почитать немного теории "Guide to IP Layer Network Administration with Linux".
Посмотрели? Почитали? Ну начинаем колдовать...

Код: Выделить всё

# ip rule add from 192.168.0.1 table 1
# ip rule add from 192.168.0.2 table 1
# ip rule add from 192.168.0.3 table 1
# ip rule add from 192.168.0.4 table 1
# ip rule add from 192.168.0.5 table 1
# ip rule add from 192.168.0.6 table 1
# ip rule add from 192.168.0.7 table 1
# ip rule add from 192.168.0.8 table 1
# ip rule add from 192.168.0.9 table 1
# ip rule add from 192.168.0.10 table 1
# ip rule add from 192.168.0.240 table 2
# ip rule add from 192.168.0.241 table 2
# ip rule add from 192.168.0.242 table 2
# ip rule add from 192.168.0.243 table 2
# ip rule add from 192.168.0.244 table 2
# ip rule add from 192.168.0.245 table 2
# ip rule add from 192.168.0.246 table 2
# ip rule add from 192.168.0.247 table 2
# ip rule add from 192.168.0.248 table 2
# ip rule add from 192.168.0.249 table 2
# ip rule add from 192.168.0.250 table 2
# ip route add 192.168.0.0/24 dev eth0 table 1
# ip route add 192.168.0.0/24 dev eth0 table 2
# ip route add default via 194.79.20.14 dev eth1 table 1
# ip route add default via 194.79.20.14 dev eth2 table 2


в итоге получили следующее:

Код: Выделить всё

# ip rule show
0:      from all lookup 255
32744:  from 192.168.0.250 lookup 2
32745:  from 192.168.0.249 lookup 2
32746:  from 192.168.0.248 lookup 2
32747:  from 192.168.0.247 lookup 2
32748:  from 192.168.0.246 lookup 2
32749:  from 192.168.0.245 lookup 2
32750:  from 192.168.0.244 lookup 2
32751:  from 192.168.0.243 lookup 2
32752:  from 192.168.0.242 lookup 2
32753:  from 192.168.0.241 lookup 2
32754:  from 192.168.0.240 lookup 2
32755:  from 192.168.0.10 lookup 1
32756:  from 192.168.0.9 lookup 1
32757:  from 192.168.0.8 lookup 1
32758:  from 192.168.0.7 lookup 1
32759:  from 192.168.0.6 lookup 1
32760:  from 192.168.0.5 lookup 1
32761:  from 192.168.0.4 lookup 1
32762:  from 192.168.0.3 lookup 1
32763:  from 192.168.0.2 lookup 1
32764:  from 192.168.0.1 lookup 1
32766:  from all lookup main
32767:  from all lookup default
# ip route show table 1
192.168.0.0/24 dev eth0  scope link
default via 194.79.20.14 dev eth1
# ip route show table 2
192.168.0.0/24 dev eth0  scope link
default via 195.80.21.9 dev eth2
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
Спасибо сказали:
kvs
Сообщения: 84

Re: NAT для части сети

Сообщение kvs »

раздели сетку, тока в правилах и в маршрутизации
192.168.0.1/255.255.255.128
192.168.0.128/255.255.255.128,
меньше код будет и проще разруливать,
а сама сетка останется 192.168.0.1/255.255.255.0
Спасибо сказали:
Аватара пользователя
bool
Сообщения: 4
ОС: openSuSE 10.2

Re: NAT для части сети

Сообщение bool »

Работает.
Спасибо всем большое =)
Мнения автора может не совпадать с его точкой зрения. (с) В. Пелевин
Спасибо сказали: