Всем здраствуйте!
Описание:
Есть локальная сеть 192.168.0.0/24. Есть шлюз на котором 3 сетевые карты. Одна смотрит внутрь, остальные две в мир, разные провайдеры.
Задача такова:
Поднять NAT для части сети, например, для 192.168.0.1-192.168.0.10 - выход через одного провайдера, для 192.168.0.240-192.168.0.250 - через другого. Оставшийся кусок сети остается без NAT.
Подскажите, как это должно выглядеть и как реализовать будет лучше.
NAT для части сети (Настроить NAT для куска сети.)
Модераторы: SLEDopit, Модераторы разделов
-
- Сообщения: 4
- ОС: openSuSE 10.2
NAT для части сети
Мнения автора может не совпадать с его точкой зрения. (с) В. Пелевин
-
- Сообщения: 365
- Статус: RAP22-RIPE
- ОС: Debian GNU/Linux Wheezy
Re: NAT для части сети
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
-
- Сообщения: 4
- ОС: openSuSE 10.2
Re: NAT для части сети
Ага.
Это понятно.
Но теперь проблема в маршрутизации.
Не могу сообразить, как она должна выглядеть.
Ведь НАТятся пакеты уже после принятия решения о маршрутизации.
Это понятно.
Но теперь проблема в маршрутизации.
Не могу сообразить, как она должна выглядеть.
Ведь НАТятся пакеты уже после принятия решения о маршрутизации.
Мнения автора может не совпадать с его точкой зрения. (с) В. Пелевин
-
- Сообщения: 365
- Статус: RAP22-RIPE
- ОС: Debian GNU/Linux Wheezy
Re: NAT для части сети
Смотрим в сторону пакета 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
-
- Сообщения: 84
Re: NAT для части сети
раздели сетку, тока в правилах и в маршрутизации
192.168.0.1/255.255.255.128
192.168.0.128/255.255.255.128,
меньше код будет и проще разруливать,
а сама сетка останется 192.168.0.1/255.255.255.0
192.168.0.1/255.255.255.128
192.168.0.128/255.255.255.128,
меньше код будет и проще разруливать,
а сама сетка останется 192.168.0.1/255.255.255.0
-
- Сообщения: 4
- ОС: openSuSE 10.2
Re: NAT для части сети
Работает.
Спасибо всем большое =)
Спасибо всем большое =)
Мнения автора может не совпадать с его точкой зрения. (с) В. Пелевин