1

Доброго времени суток всем. Есть задачка которую никак не удается решить. Есть linux хост с адресом 192.168.0.1/24, это вообщем сервер. На нем вертится одно приложение на tcp порту пускай будет xx, которое из-за своих особенностей обрабатывает только первые десять запросов пришедшие с десяти адресов. То есть если сделать 10 запросов на этот порт с 10 разных адресов, то одинадцатый и все последующие клиенты работать не будут, сервер отдает ошибку с сылкой на ограничения из-за лицензии. Надо этот вопрос как-то решить, но пока не знаю как. Была такая идея:

1.   Создаю на этом хосте еще один интерфейс eth0:0 с адресом например 192.168.1.1

2.   Далее сервис вешаю на этот адрес.

3.  И как-то надо занатить все пакеты от хостов с интерфейса 192.168.0.1, то есть что бы клиент x.x.x.x обратился на адрес 192.168.1.1 через хоп 192.168.0.1 с натом.

Но iptables никак не хочет работать с интерфейсом типа ethx:x. Может это конечно и правильно, но правило типа iptables -A PREROUTING -t NAT -s eth0:0 -j MASQUERADE рабоать не хочет.


Подскажите плиз решение или как побороть iptables. Очень надо, горю просто.

p.s.  Думал в сторону прокси, но надо пробрасывать около 10 портов. 10 экземпляров squid как-то наверное не правильно будет.  ac

2

Мне кажется вы изобритаете велосипед.
Раз уж решились делать вируальную сетевую карту на сервере, то почему не сделать так же на клиентах, которым "не хватает" подключений?
А побороть iptables себе дороже.
Что бы работал форвард между интерфейсами, это должны быть РАЗНЫЕ физически интерфейсы, тоесть вторая сетевая карта, потому что форвард пакетов делает ядро, и оно не может (не станет) перенправлять пакет "туда, откуда он только что пришёл".

Истина ускользает от тех кто отказывается её видеть обоими глазами.
Талантам нужно помогать, бездарности пробьются сами.
В Туле настолько суровые парни, что вместо пены для бритья, используют пену монтажную.
cat /broken/hands > /dev/null

3

Клиентов достаточно много и они из разных подсетей, в том числе и vpn. Можно конечно роутер собрать перед хостом или кошку поставить, но задача поставленна сделать это на этой же машине (железа нету  ac ). А если например сделать такую схему, поднять все-таки второй физ. интерфейс на сервере и воткнуть его например в какой-нибудь stub. К примеру сервер имеет две сетевые карты и подключен к коммутатору в разные вланы. например eth0 192.168.0.1/24 и eth1 10.10.10.1/30. И все сервисы этого злосчастного приложения перевесить на eth1 и включить маскарад, то по идее работать должно. Или я ошибаюсь? Еще мучает одна идея по поводу reverse-proxy но такие штуки не настраивал за ненадобностью. Что скажете?

4

Задача решена путем настройки nginx. Так же попробовал продукт pound. Оба продукта очень гибкие в настройке.