The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Двойной NAT??"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"Двойной NAT??"  +/
Сообщение от Funky on 18-Сен-15, 10:36 
Всем привет!

Есть сервер, который имеет за одним из интерфейсов (пусть eth2) сеть 10.160.1.0/24.

Задача: для ПО, работающего на этом сервере надо как-то эмулировать, что за этим интерфейсом на самом деле находится сеть 10.161.1.0/24.
Т.е. ПО на сервере должно обращаться к клиентам в этой сети как к 10.161.1.0/24, а хитрый нат должен перебивать адреса в 10.160.1.0/24.

Я попробовал покрутиться с iproute2 + iptables, но пока выходит затыка с ARP, непонятно адрес из какой сети вешать на eth2 (из реальной 10.160.1.0 или 10.161.1.0)

Как это сделать?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Двойной NAT??"  +/
Сообщение от name (??) on 18-Сен-15, 13:46 
> Всем привет!
> Есть сервер, который имеет за одним из интерфейсов (пусть eth2) сеть 10.160.1.0/24.
> Задача: для ПО, работающего на этом сервере надо как-то эмулировать, что за
> этим интерфейсом на самом деле находится сеть 10.161.1.0/24.
> Т.е. ПО на сервере должно обращаться к клиентам в этой сети как
> к 10.161.1.0/24, а хитрый нат должен перебивать адреса в 10.160.1.0/24.
> Я попробовал покрутиться с iproute2 + iptables, но пока выходит затыка с
> ARP, непонятно адрес из какой сети вешать на eth2 (из реальной
> 10.160.1.0 или 10.161.1.0)
> Как это сделать?

proxy arp

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Двойной NAT??"  +/
Сообщение от eRIC (ok) on 18-Сен-15, 13:48 
не совсем ясная задача, но я как понял нужно беребрасывать пакеты из одной сети в другую, хотя могу ошибаться

алиас на сетевой прописать из сети 10.161.1.0/24

если нужен One-To-One:

#iptables -t nat -A POSTROUTING -s 10.161.1.1 -o eth2:1 -j SNAT --to-source 10.160.1.1
#iptables -t nat -A POSTROUTING -s 10.161.1.2 -o eth2:1 -j SNAT --to-source 10.160.1.2
#iptables -t nat -A POSTROUTING -s 10.161.1.3 -o eth2:1 -j SNAT --to-source 10.160.1.3
и т.д для каждого IP

или если порядок не важен:

#iptables -t nat -A POSTROUTING -s 10.161.1.0/24 -o eth2:1 -j SNAT --to-source 10.160.1.1-10.160.1.254


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Двойной NAT??"  +/
Сообщение от Funky on 18-Сен-15, 14:14 
> не совсем ясная задача, но я как понял нужно беребрасывать пакеты из
> одной сети в другую, хотя могу ошибаться

попробую сформулировать ещё раз :)
есть сервер, который имеет несколько интерфейсов. Возникла задача подключить к нему очередную сеть 10.160.1.0/24 (но такая уже есть на сервере), и нужно к новой сети обращаться с сервера как к 10.161.1.0/24.
Т.е. в ПО, которое крутиться на сервере, все хосты этой сети должны иметь адреса 10.161.1.0/24.

>[оверквотинг удален]
> #iptables -t nat -A POSTROUTING -s 10.161.1.1 -o eth2:1 -j SNAT --to-source
> 10.160.1.1
> #iptables -t nat -A POSTROUTING -s 10.161.1.2 -o eth2:1 -j SNAT --to-source
> 10.160.1.2
> #iptables -t nat -A POSTROUTING -s 10.161.1.3 -o eth2:1 -j SNAT --to-source
> 10.160.1.3
> и т.д для каждого IP
> или если порядок не важен:
> #iptables -t nat -A POSTROUTING -s 10.161.1.0/24 -o eth2:1 -j SNAT --to-source
> 10.160.1.1-10.160.1.254

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Двойной NAT??"  +/
Сообщение от Andrey Mitrofanov on 18-Сен-15, 14:17 
> есть сервер, который имеет несколько интерфейсов. Возникла задача подключить к нему очередную
> сеть 10.160.1.0/24 (но такая уже есть на сервере), и нужно к
> новой сети обращаться с сервера как к 10.161.1.0/24.
> Т.е. в ПО, которое крутиться на сервере, все хосты этой сети должны
> иметь адреса 10.161.1.0/24.

Ну второй ip на интерфейс, иногда известный, как alias, и всё.

VLAN-ы и управляемые свичи требуют ещё более переформулированной задачи.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Двойной NAT??"  +/
Сообщение от Funky on 18-Сен-15, 14:26 
> Ну второй ip на интерфейс, иногда известный, как alias, и всё.
> VLAN-ы и управляемые свичи требуют ещё более переформулированной задачи.

ещё раз.
У сервера получается по факту 2 подключённые к нему сети с ОДИННАКОВОЙ адресацией 10.160.1.0/24.

На интерфейсе из первой сети у него адрес 10.160.1.1/24, на интерфейсе из второй сети у него 10.160.1.2/24.

Клиенты из первой сети обращаются к нему по адресу 10.160.1.1, клиенты второй сети обращаются по адресу 10.160.1.2. Адреса клиентов не меняются, адреса сервера к которому клиенты обращаются тоже не меняются.
Как я вижу можно попробовать на сервере клиентов второй одиннаковой сети "спрятать" за двойной nat. Т.е. сервер будет обращаться к ним как к 10.161.1.0/24.

так яснее?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Двойной NAT??"  +/
Сообщение от Etch on 18-Сен-15, 14:53 
Забудьте про NAT и фейковую сеть, так вы ничего не добьётесь. Вам нужен iproute2 - гуглить "линукс и два провайдера". Например вот: http://habrahabr.ru/post/49137/

В конечном итоге вам нужно будет привязывать программы для работы со второй сетью к соответствующему локальному IP. Например так

ping 10.160.1.222 -I 10.160.1.2

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Двойной NAT??"  +/
Сообщение от eRIC (ok) on 18-Сен-15, 14:57 
>[оверквотинг удален]
> адресацией 10.160.1.0/24.
> На интерфейсе из первой сети у него адрес 10.160.1.1/24, на интерфейсе из
> второй сети у него 10.160.1.2/24.
> Клиенты из первой сети обращаются к нему по адресу 10.160.1.1, клиенты второй
> сети обращаются по адресу 10.160.1.2. Адреса клиентов не меняются, адреса сервера
> к которому клиенты обращаются тоже не меняются.
> Как я вижу можно попробовать на сервере клиентов второй одиннаковой сети "спрятать"
> за двойной nat. Т.е. сервер будет обращаться к ним как к
> 10.161.1.0/24.
> так яснее?

так яснее :) nat тут не поможет, нужен iproute2 и две таблицы чтобы направлять пакеты на нужные сетевые карты. копайте в эту сторону

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Двойной NAT??"  +/
Сообщение от Funky on 18-Сен-15, 15:21 
>[оверквотинг удален]
>> второй сети у него 10.160.1.2/24.
>> Клиенты из первой сети обращаются к нему по адресу 10.160.1.1, клиенты второй
>> сети обращаются по адресу 10.160.1.2. Адреса клиентов не меняются, адреса сервера
>> к которому клиенты обращаются тоже не меняются.
>> Как я вижу можно попробовать на сервере клиентов второй одиннаковой сети "спрятать"
>> за двойной nat. Т.е. сервер будет обращаться к ним как к
>> 10.161.1.0/24.
>> так яснее?
> так яснее :) nat тут не поможет, нужен iproute2 и две таблицы
> чтобы направлять пакеты на нужные сетевые карты. копайте в эту сторону

как это nat не нужен? в обоих сетях есть клиенты с адресом, например, 10.160.1.10
как вы будете к ним обращаться?

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Двойной NAT??"  +/
Сообщение от Etch on 18-Сен-15, 15:57 
> как это nat не нужен? в обоих сетях есть клиенты с адресом,
> например, 10.160.1.10
> как вы будете к ним обращаться?

Ещё раз:
ping 10.160.1.10 -I 10.160.1.2

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Двойной NAT??"  +/
Сообщение от Funky on 18-Сен-15, 16:09 
>> как это nat не нужен? в обоих сетях есть клиенты с адресом,
>> например, 10.160.1.10
>> как вы будете к ним обращаться?
> Ещё раз:
> ping 10.160.1.10 -I 10.160.1.2

А если надо получить доступ на клиента по ssh? что тогда?

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Двойной NAT??"  +/
Сообщение от Etch on 18-Сен-15, 16:22 
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] ....
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Двойной NAT??"  +/
Сообщение от Funky on 18-Сен-15, 16:29 
> usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] ....

А если завтра понадобится использование программы, которая не позволяет указать интерфейс ил адрес?
хочется универсального решения.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Двойной NAT??"  +/
Сообщение от Etch on 18-Сен-15, 16:56 
Тогда сетевые неймспейсы заюзаете (ip netns help). В любом случае вам нужно сначала маршрутизацию на политиках настроить, всё остальное будет работать только поверх неё.
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Двойной NAT??"  +/
Сообщение от Etch on 18-Сен-15, 20:25 
Впрочем, можно и без политик - сразу через сетевые неймспейсы:
ip netns add second
ip link set dev eth2 netns second

ip addr add 10.160.1.2/24 dev eth2
ip netns exec second   ip addr add 10.160.1.2/24 dev eth2

ip netns exec second   ip link set dev eth2 up


Но тогда все программы для работы со второй сетью придётся запускать в этом же неймспейсе, а для этого нужны права рута, что по-моему неудобно:
gksudo -l -- ip net exec second  su -c opera -l username


А в варианте через политики можно будет поверх приделать NETMAP - тогда получится то, что вы хотели изначально.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

16. "Двойной NAT??"  +/
Сообщение от eRIC (ok) on 21-Сен-15, 06:10 
>> usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] ....
> А если завтра понадобится использование программы, которая не позволяет указать интерфейс
> ил адрес?
> хочется универсального решения.

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

ну а если завтра атомную бомбу выкинут....

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

15. "Двойной NAT??"  +1 +/
Сообщение от анон on 19-Сен-15, 13:25 
> Всем привет!
> Есть сервер, который имеет за одним из интерфейсов (пусть eth2) сеть 10.160.1.0/24.
> Задача: для ПО, работающего на этом сервере надо как-то эмулировать, что за
> этим интерфейсом на самом деле находится сеть 10.161.1.0/24.
> Т.е. ПО на сервере должно обращаться к клиентам в этой сети как
> к 10.161.1.0/24, а хитрый нат должен перебивать адреса в 10.160.1.0/24.
> Я попробовал покрутиться с iproute2 + iptables, но пока выходит затыка с
> ARP, непонятно адрес из какой сети вешать на eth2 (из реальной
> 10.160.1.0 или 10.161.1.0)
> Как это сделать?

с сетями разберитесь, а не хрень городите

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

17. "Двойной NAT??"  +/
Сообщение от eRIC (ok) on 21-Сен-15, 06:10 
>[оверквотинг удален]
>> Есть сервер, который имеет за одним из интерфейсов (пусть eth2) сеть 10.160.1.0/24.
>> Задача: для ПО, работающего на этом сервере надо как-то эмулировать, что за
>> этим интерфейсом на самом деле находится сеть 10.161.1.0/24.
>> Т.е. ПО на сервере должно обращаться к клиентам в этой сети как
>> к 10.161.1.0/24, а хитрый нат должен перебивать адреса в 10.160.1.0/24.
>> Я попробовал покрутиться с iproute2 + iptables, но пока выходит затыка с
>> ARP, непонятно адрес из какой сети вешать на eth2 (из реальной
>> 10.160.1.0 или 10.161.1.0)
>> Как это сделать?
> с сетями разберитесь, а не хрень городите

+++1

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру