Всем привет,задача следующая:
необходимо, чтобы все запросы через определенные порты, скажем для примера 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, что он не является целью пакета, а именно рутером для него, который затем доставляет пакет к компьютеру в интернете.
Большое спасибо за помощь!!!
Прошу упроститить поскольку сам ничего понять не могу. Сформулируй конкретную задачю. С реальными портами.
>Прошу упроститить поскольку сам ничего понять не могу. Сформулируй конкретную задачю. С
>реальными портами.
Да, задача не простая поэтому не сразу понятно что надо. Задачу упростить не получится, потому как все как-бы в одной связке, иначе получается просто другая задача.По порядку:
Имеется локальная сеть. В ней помимо клиентовских компов есть еще два рутера.
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 не меняет в нем цели она просто его отправляет - куда надо... Попробуй их просто развернуть и скажи гда затык...
>даже самому интересно стало и сильно задумался... А почем простой пересылкой пакетов
>не получаеться... Ведь при развороте пакета iptables не меняет в нем
>цели она просто его отправляет - куда надо... Попробуй их просто
>развернуть и скажи гда затык...
Да я не против, но покажи, пожайлуста на примере, я имею ввиду как команда тогда выглядеть будет. Я iptables занимаюсь недавно, поэтому пока что меня за ручку водить еще надо, но ходить уже умею сам :-))))))
>>даже самому интересно стало и сильно задумался... А почем простой пересылкой пакетов
>>не получаеться... Ведь при развороте пакета iptables не меняет в нем
>>цели она просто его отправляет - куда надо... Попробуй их просто
>>развернуть и скажи гда затык...
>
>
>Да я не против, но покажи, пожайлуста на примере, я имею ввиду
>как команда тогда выглядеть будет. Я iptables занимаюсь недавно, поэтому пока
>что меня за ручку водить еще надо, но ходить уже умею
>сам :-))))))
через iptables ставить метки нужным пакетам, а в правилах маршрутизации указать, что пакеты с нужными метками направлять через второй роутер
man iptables
map ip
>Всем привет,
>
>задача следующая:
>
>необходимо, чтобы все запросы через определенные порты, скажем для примера 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 останеться неизменённым
>Большое спасибо за помощь!!!
>а зачем тогда PREROUTING?????
>тебе не DNAT нужен а как-то подружить маршрутизацию и порты назначения нада
>
>а если ты на второй рутер DNAT`ом пакет пересылать будешь - то
>само сабой понятно что второй рутер будет считать и вполне справедливо
>что пакет ему то и предназначается
>т/ к/ в поле получателя бует его ip/port range а src ip/port
>останеться неизменённымЭто было лишь предположение. Собственно с рутера1 пакеты надо же как-то перенаправлять. Хотя согласен, что DNAT перенаправляет уже к цели. Хорошо, если не PREROUTING, тогда что?