Всем привет!Есть сервер, который имеет за одним из интерфейсов (пусть 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)
Как это сделать?
> Всем привет!
> Есть сервер, который имеет за одним из интерфейсов (пусть 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
не совсем ясная задача, но я как понял нужно беребрасывать пакеты из одной сети в другую, хотя могу ошибатьсяалиас на сетевой прописать из сети 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
> не совсем ясная задача, но я как понял нужно беребрасывать пакеты из
> одной сети в другую, хотя могу ошибатьсяпопробую сформулировать ещё раз :)
есть сервер, который имеет несколько интерфейсов. Возникла задача подключить к нему очередную сеть 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
> есть сервер, который имеет несколько интерфейсов. Возникла задача подключить к нему очередную
> сеть 10.160.1.0/24 (но такая уже есть на сервере), и нужно к
> новой сети обращаться с сервера как к 10.161.1.0/24.
> Т.е. в ПО, которое крутиться на сервере, все хосты этой сети должны
> иметь адреса 10.161.1.0/24.Ну второй ip на интерфейс, иногда известный, как alias, и всё.
VLAN-ы и управляемые свичи требуют ещё более переформулированной задачи.
> Ну второй 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.так яснее?
Забудьте про NAT и фейковую сеть, так вы ничего не добьётесь. Вам нужен iproute2 - гуглить "линукс и два провайдера". Например вот: http://habrahabr.ru/post/49137/В конечном итоге вам нужно будет привязывать программы для работы со второй сетью к соответствующему локальному IP. Например так
ping 10.160.1.222 -I 10.160.1.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.
> так яснее?так яснее :) nat тут не поможет, нужен iproute2 и две таблицы чтобы направлять пакеты на нужные сетевые карты. копайте в эту сторону
>[оверквотинг удален]
>> второй сети у него 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
как вы будете к ним обращаться?
> как это nat не нужен? в обоих сетях есть клиенты с адресом,
> например, 10.160.1.10
> как вы будете к ним обращаться?Ещё раз:
ping 10.160.1.10 -I 10.160.1.2
>> как это nat не нужен? в обоих сетях есть клиенты с адресом,
>> например, 10.160.1.10
>> как вы будете к ним обращаться?
> Ещё раз:
> ping 10.160.1.10 -I 10.160.1.2А если надо получить доступ на клиента по ssh? что тогда?
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] ....
> usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] ....А если завтра понадобится использование программы, которая не позволяет указать интерфейс ил адрес?
хочется универсального решения.
Тогда сетевые неймспейсы заюзаете (ip netns help). В любом случае вам нужно сначала маршрутизацию на политиках настроить, всё остальное будет работать только поверх неё.
Впрочем, можно и без политик - сразу через сетевые неймспейсы:ip netns add second
ip link set dev eth2 netns secondip addr add 10.160.1.2/24 dev eth2
ip netns exec second ip addr add 10.160.1.2/24 dev eth2ip netns exec second ip link set dev eth2 up
Но тогда все программы для работы со второй сетью придётся запускать в этом же неймспейсе, а для этого нужны права рута, что по-моему неудобно:gksudo -l -- ip net exec second su -c opera -l username
А в варианте через политики можно будет поверх приделать NETMAP - тогда получится то, что вы хотели изначально.
>> usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] ....
> А если завтра понадобится использование программы, которая не позволяет указать интерфейс
> ил адрес?
> хочется универсального решения.нат не нужен, как будет идти обращение у тебя с двух одинаковых сетей.
ну а если завтра атомную бомбу выкинут....
> Всем привет!
> Есть сервер, который имеет за одним из интерфейсов (пусть 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)
> Как это сделать?с сетями разберитесь, а не хрень городите
>[оверквотинг удален]
>> Есть сервер, который имеет за одним из интерфейсов (пусть 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