URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 1590
[ Назад ]

Исходное сообщение
"Перенаправление через iptables c одного рутера на другой"

Отправлено wcopennet , 10-Сен-04 12:33 
Всем привет,

задача следующая:

необходимо, чтобы все запросы через определенные порты, скажем для примера 25000-30000, которые идут через рутер (на нем стоит iptables и его внутренний адрес 192.168.0.1), перенаправлялись в другой рутер (именно рутер, а не в конечную цель), который стоит тоже в локалке. Причем запросы могут идти на любой комп в интернете, а не на конкретный адрес.

Понятно, что надо использовать что-то вроде
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 25000-30000 -j DNAT --to xxxxxx:25000-30000

и затем

iptables -t nat -A POSTROUTING -p tcp -o eth0 --dport 25000-30000 -j SNAT --to 192.168.0.2    (192.168.0.2 - второй рутер)

Но непонятны две главные вещи:

1. Как же мне указать вместо xxxxxx, что запрос может поступать к любому компу в интернете. Что-то вроде 1.1.1.1-255.255.255.254. В принципе, в качестве правила принимается, но правильно ли это с точки зрения логики? :-)

2. Ну и самое не понятное как дать понять второму рутеру 192.68.0.2, что он не является целью пакета, а именно рутером для него, который затем доставляет пакет к компьютеру в интернете.

Большое спасибо за помощь!!!


Содержание

Сообщения в этом обсуждении
"Перенаправление через iptables c одного рутера на другой"
Отправлено Achist , 10-Сен-04 13:35 
Прошу упроститить поскольку сам ничего понять не могу. Сформулируй конкретную задачю. С реальными портами.

"Перенаправление через iptables c одного рутера на другой"
Отправлено wcopennet , 10-Сен-04 16:44 
>Прошу упроститить поскольку сам ничего понять не могу. Сформулируй конкретную задачю. С
>реальными портами.


Да, задача не простая поэтому не сразу понятно что надо. Задачу упростить не получится, потому как все как-бы в одной связке, иначе получается просто другая задача.

По порядку:

Имеется локальная сеть. В ней помимо клиентовских компов есть еще два рутера.

1. Причем первый рутер на котором установлены iptables(с внутренним адресом 192.168.0.1 и внешним 217.x.x.101) в настоящее время используется всеми клиентами для выхода в интернет.

2. Второй рутер (с внутренним адресом 192.168.0.2 и внешним 217.x.x.102, не линукс, дешевый хардваре-рутер) необходим для того, чтобы клиенты использовали его для видеоконференции (на самом деле не так важно для видео конференции и для какой-либо другой службы, главное это речь о портах).

Итак получается, что клиент (например 192.168.0.50) хочет установить связь с каким-то компом в интернете, ну например, 167.56.90.11. Он обращается по портам 25000-30000 к рутеру1. Рутер1 увидев, что затребовали доступ по портам 25000-30000 должен перевести поток к рутеру2, причем так, чтобы рутер2 не считался целью соединения, а именно продолжил передачу потока дальше к компу 167.56.90.11.

Задача тяжелая. И даже не знаю выполнима ли она. Но может кто-что подскажет.  

В любом случае огромное спасибо за помощь!


"Перенаправление через iptables c одного рутера на другой"
Отправлено Achist , 10-Сен-04 16:56 
даже самому интересно стало и сильно задумался... А почем простой пересылкой пакетов не получаеться... Ведь при развороте пакета iptables не меняет в нем цели она просто его отправляет - куда надо... Попробуй их просто развернуть и скажи гда затык...



"Перенаправление через iptables c одного рутера на другой"
Отправлено wcopennet , 10-Сен-04 17:25 
>даже самому интересно стало и сильно задумался... А почем простой пересылкой пакетов
>не получаеться... Ведь при развороте пакета iptables не меняет в нем
>цели она просто его отправляет - куда надо... Попробуй их просто
>развернуть и скажи гда затык...


Да я не против, но покажи, пожайлуста на примере, я имею ввиду как команда тогда выглядеть будет. Я iptables занимаюсь недавно, поэтому пока что меня за ручку водить еще надо, но ходить уже умею сам :-))))))


"Перенаправление через iptables c одного рутера на другой"
Отправлено Maxim Kuznetsov , 10-Сен-04 19:18 
>>даже самому интересно стало и сильно задумался... А почем простой пересылкой пакетов
>>не получаеться... Ведь при развороте пакета iptables не меняет в нем
>>цели она просто его отправляет - куда надо... Попробуй их просто
>>развернуть и скажи гда затык...
>
>
>Да я не против, но покажи, пожайлуста на примере, я имею ввиду
>как команда тогда выглядеть будет. Я iptables занимаюсь недавно, поэтому пока
>что меня за ручку водить еще надо, но ходить уже умею
>сам :-))))))
через iptables ставить метки нужным пакетам, а в правилах маршрутизации указать, что пакеты с нужными метками направлять через второй роутер
man iptables
map ip



"Перенаправление через iptables c одного рутера на другой"
Отправлено Arifolth , 13-Сен-04 09:42 
>Всем привет,
>
>задача следующая:
>
>необходимо, чтобы все запросы через определенные порты, скажем для примера 25000-30000, которые
>идут через рутер (на нем стоит iptables и его внутренний адрес
>192.168.0.1), перенаправлялись в другой рутер (именно рутер, а не в конечную
>цель), который стоит тоже в локалке. Причем запросы могут идти на
>любой комп в интернете, а не на конкретный адрес.
>
>Понятно, что надо использовать что-то вроде
>iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 25000-30000 -j
>DNAT --to xxxxxx:25000-30000
>
>и затем
>
>iptables -t nat -A POSTROUTING -p tcp -o eth0 --dport 25000-30000 -j
>SNAT --to 192.168.0.2    (192.168.0.2 - второй рутер)
>
>Но непонятны две главные вещи:
>
>1. Как же мне указать вместо xxxxxx, что запрос может поступать к
>любому компу в интернете. Что-то вроде 1.1.1.1-255.255.255.254. В принципе, в качестве
>правила принимается, но правильно ли это с точки зрения логики? :-)
а почему не пойти от обратного?
ну например указать
--
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 25000-30000 -d ! 192.0.0.0-223.255.255.0 -j DNAT --to xxxxxx:25000-30000  
--
>
>
>2. Ну и самое не понятное как дать понять второму рутеру 192.68.0.2,
>что он не является целью пакета, а именно рутером для него,
>который затем доставляет пакет к компьютеру в интернете.
?!!
а зачем тогда PREROUTING?????
тебе не DNAT нужен а как-то подружить маршрутизацию и порты назначения нада
а если ты на второй рутер DNAT`ом пакет пересылать будешь - то само сабой понятно что второй рутер будет считать и вполне справедливо что пакет ему то и предназначается
т/ к/ в поле получателя бует его ip/port range а src ip/port останеться неизменённым
>Большое спасибо за помощь!!!

"Перенаправление через iptables c одного рутера на другой"
Отправлено wcopennet , 13-Сен-04 11:40 
>а зачем тогда PREROUTING?????
>тебе не DNAT нужен а как-то подружить маршрутизацию и порты назначения нада
>
>а если ты на второй рутер DNAT`ом пакет пересылать будешь - то
>само сабой понятно что второй рутер будет считать и вполне справедливо
>что пакет ему то и предназначается
>т/ к/ в поле получателя бует его ip/port range а src ip/port
>останеться неизменённым

Это было лишь предположение. Собственно с рутера1 пакеты надо же как-то перенаправлять. Хотя согласен, что DNAT перенаправляет уже к цели. Хорошо, если не PREROUTING, тогда что?