Здесь есть гуру? Тогда мы идем к вам :)Я не спец в настройках iptables, да и занимаюсь этим от силы раз-два в год, и хотя пытался изучать эту непростую систему, за полгода она быстро забывается.
Поэтому до этого времени вполне довольствовался готовыми примерами, которые адаптировал к своей ситуации.
Но на один, казалось бы - простейший вопрос, в Рунете к сожалению, не нашлось ни одного вменяемого ответа.
Некоторые найденные примеры либо отталкивали своей сложностью, либо авторы сами путались в них.Это была преамбула, теперь по сути:
Есть NAT с внешним 77.77.77.77 и внутренними интерфейсами eth0 и virbr0 (используется KVM).
Внутренняя сетка состоит из двух компьютеров - 192.168.122.101 и 192.168.122.102.Нужно сделать перенаправление портов извне на эти компьютеры с внешних портов 15901 и 15902 соответственно на внутренние 5901 и 5902.
Максимум. что сумел сделать - это проброс внешнего порта 5901 на такой же внутренний 5901, и это работает:
iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 5901 -j DNAT --to-destination 192.168.122.101
iptables -I FORWARD 1 -i eth0 -o virbr0 -d 192.168.122.101 -p tcp -m tcp --dport 5901 -j ACCEPT
Дальше, сколько не морщил извилины, полный тупик :( Более того - ЛОР тоже обломился на этой задачке!
Поэтому уже начинаю сомневаться, действительно ли так проста эта задачка?..Господа нетовцы, помогите простому юзеру в решении этой непростой задачи!
(в виде команд iptables, т.к. конфиг получатся очень большой и громоздкий).
>[оверквотинг удален]
> же внутренний 5901, и это работает:
> iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 5901 -j
> DNAT --to-destination 192.168.122.101
> iptables -I FORWARD 1 -i eth0 -o virbr0 -d 192.168.122.101 -p tcp
> -m tcp --dport 5901 -j ACCEPT
> Дальше, сколько не морщил извилины, полный тупик :( Более того -
> ЛОР тоже обломился на этой задачке!
> Поэтому уже начинаю сомневаться, действительно ли так проста эта задачка?..
> Господа нетовцы, помогите простому юзеру в решении этой непростой задачи!
> (в виде команд iptables, т.к. конфиг получатся очень большой и громоздкий).iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 15901 -j DNAT --to-destination 192.168.122.101:5901
iptables -I FORWARD 1 -i eth0 -o virbr0 -d 192.168.122.101 -p tcp -m tcp --dport 5901 -j ACCEPT
не?
>[оверквотинг удален]
>> Дальше, сколько не морщил извилины, полный тупик :( Более того -
>> ЛОР тоже обломился на этой задачке!
>> Поэтому уже начинаю сомневаться, действительно ли так проста эта задачка?..
>> Господа нетовцы, помогите простому юзеру в решении этой непростой задачи!
>> (в виде команд iptables, т.к. конфиг получатся очень большой и громоздкий).
> iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 15901 -j
> DNAT --to-destination 192.168.122.101:5901
> iptables -I FORWARD 1 -i eth0 -o virbr0 -d 192.168.122.101 -p tcp
> -m tcp --dport 5901 -j ACCEPT
> не?Не, т.к. не разрешены обратные пакеты.
Человек выше писал, что
> Максимум. что сумел сделать - это проброс внешнего порта 5901 на такой же внутренний 5901, и это работаетзанчит либо на FORWARD стоит ACCEPT , либо соответствующее правило есть. Ему показали куда копать- дальше и сам может додумать... Ну или вы подскажите...
> занчит либо на FORWARD стоит ACCEPT , либо соответствующее правило есть. Ему
> показали куда копать- дальше и сам может додумать... Ну или вы подскажите...Конечно, подскажите, пожалуйста! Потому что сам точно не дотумкаюсь :))
И что удивительно - на этот случай в интернете ни одного рабочего примера!
Вот к примеру, написал какой-то аноним якобы рабочий пример по данному случаю:http://digitalshock.ru/перенаправлление-порта-iptables/
но увы, он тоже не работает :(
PS. Ага, оказалось, что такая придурочная англо-кирилическая ссылка на опеннете по клику не работает.
Тогда копируйте ее целиком как текст и вставляйте в браузер.
На всякий случай скопирую этот пример сюда:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 25 -j DNAT --to XXX.XXX.XXX.XXX:2525
iptables -A POSTROUTING -t nat -p tcp -d XXX.XXX.XXX.XXX --dport 2525 -j SNAT --to-source YYY.YYY.YYY.YYY
>[оверквотинг удален]
> KVM).
> Внутренняя сетка состоит из двух компьютеров - 192.168.122.101 и 192.168.122.102.
> Нужно сделать перенаправление портов извне на эти компьютеры с внешних портов 15901
> и 15902 соответственно на внутренние 5901 и 5902.
> Максимум. что сумел сделать - это проброс внешнего порта 5901 на такой
> же внутренний 5901, и это работает:
> iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 5901 -j
> DNAT --to-destination 192.168.122.101
> iptables -I FORWARD 1 -i eth0 -o virbr0 -d 192.168.122.101 -p tcp
> -m tcp --dport 5901 -j ACCEPTесли eth0 внутренний, а проброс нужно с внешнего то -i eth0 убрать
и проверяйте правила для ответных пакетов> Дальше, сколько не морщил извилины, полный тупик :( Более того -
> ЛОР тоже обломился на этой задачке!
> Поэтому уже начинаю сомневаться, действительно ли так проста эта задачка?..
> Господа нетовцы, помогите простому юзеру в решении этой непростой задачи!
> (в виде команд iptables, т.к. конфиг получатся очень большой и громоздкий).
> если eth0 внутренний, а проброс нужно с внешнего то -i eth0 убратьeth0 - он внешний, это единственный здесь физический интерфейс
> и проверяйте правила для ответных пакетов
Ну да, и как это всё будет выглядеть в виде набора команд iptables ?
>> если eth0 внутренний, а проброс нужно с внешнего то -i eth0 убрать
> eth0 - он внешний, это единственный здесь физический интерфейс
>> и проверяйте правила для ответных пакетов
> Ну да, и как это всё будет выглядеть в виде набора команд
> iptables ?iptables-save
Спасибо, это понятно :) ,но я не о команде сохранения, а командах маршрутизации, которые нужно сохранять> iptables-save
> Спасибо, это понятно :) ,но я не о команде сохранения, а командах
> маршрутизации, которые нужно сохранять
>> iptables-saveвообщето я о том что уже показали бы текущие правила что бы не гадать
> вообщето я о том что уже показали бы текущие правила что бы
> не гадатьreader, извиняюсь, но не вполне понял ваш вопрос: вы о текущем состоянии iptables ?
Если да, то вот он, самый что ни на есть дефолтовый:# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
>[оверквотинг удален]
> :FORWARD ACCEPT [0:0]
> :OUTPUT ACCEPT [0:0]
> -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
> -A INPUT -p icmp -j ACCEPT
> -A INPUT -i lo -j ACCEPT
> -A INPUT -m state --state NEW -m tcp -p tcp --dport 22
> -j ACCEPT
> -A INPUT -j REJECT --reject-with icmp-host-prohibited
> -A FORWARD -j REJECT --reject-with icmp-host-prohibited
> COMMITiptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 5901 -j DNAT --to-destination 192.168.122.101
iptables -I FORWARD -o virbr0 -d 192.168.122.101 -p tcp --dport 5901 -j ACCEPT
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
> iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 5901 -j DNAT --to-destination 192.168.122.101
> iptables -I FORWARD -o virbr0 -d 192.168.122.101 -p tcp --dport 5901 -j ACCEPT
> iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPTГде-то тут должен быть внешний порт 15901, не нахожу что-то
>> iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 5901 -j DNAT --to-destination 192.168.122.101
>> iptables -I FORWARD -o virbr0 -d 192.168.122.101 -p tcp --dport 5901 -j ACCEPT
>> iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
> Где-то тут должен быть внешний порт 15901, не нахожу что-тоiptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 15901 -j DNAT --to-destination 192.168.122.101:5901
iptables -I FORWARD -o virbr0 -d 192.168.122.101 -p tcp --dport 5901 -j ACCEPT
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
> iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 15901 -j DNAT --to-destination 192.168.122.101:5901
> iptables -I FORWARD -o virbr0 -d 192.168.122.101 -p tcp --dport 5901 -j ACCEPT
> iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPTВау! Неужто это заработает? :) Если да, то как мне тебя отблагодарить?
>> iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 15901 -j DNAT --to-destination 192.168.122.101:5901
>> iptables -I FORWARD -o virbr0 -d 192.168.122.101 -p tcp --dport 5901 -j ACCEPT
>> iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
> Вау! Неужто это заработает? :) Если да, то как мне тебя
> отблагодарить?я не откажусь если ты выучиш man и info iptables ;)
> я не откажусь если ты выучиш man и info iptables ;)Дык бесполезно :) Уже писал вверху:
> Я не спец в настройках iptables, да и занимаюсь этим от силы раз-два в год, и хотя пытался изучать эту непростую систему, за полгода она быстро забывается.Т.е. можно учить-учить, и даже выучить, но потом все равно без практики, как английский, оно быстро забывается.
Ладно, будь добр, выложи уж окончательный вариант этих команд в полном виде, т.е. сразу для 2-х входящих портов 15901 и 15902
>> я не откажусь если ты выучиш man и info iptables ;)
> Дык бесполезно :) Уже писал вверху:
>> Я не спец в настройках iptables, да и занимаюсь этим от силы раз-два в год, и хотя пытался изучать эту непростую систему, за полгода она быстро забывается.
> Т.е. можно учить-учить, и даже выучить, но потом все равно без практики,
> как английский, оно быстро забывается.
> Ладно, будь добр, выложи уж окончательный вариант этих команд в полном виде,
> т.е. сразу для 2-х входящих портов 15901 и 15902iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 15901 -j DNAT --to-destination 192.168.122.101:5901
iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 15902 -j DNAT --to-destination 192.168.122.102:5902iptables -I FORWARD -o virbr0 -d 192.168.122.101 -p tcp --dport 5901 -j ACCEPT
iptables -I FORWARD -o virbr0 -d 192.168.122.102 -p tcp --dport 5902 -j ACCEPTiptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
>[оверквотинг удален]
>> т.е. сразу для 2-х входящих портов 15901 и 15902
> iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 15901 -j
> DNAT --to-destination 192.168.122.101:5901
> iptables -t nat -A PREROUTING --dst 77.77.77.77 -p tcp --dport 15902 -j
> DNAT --to-destination 192.168.122.102:5902
> iptables -I FORWARD -o virbr0 -d 192.168.122.101 -p tcp --dport 5901 -j
> ACCEPT
> iptables -I FORWARD -o virbr0 -d 192.168.122.102 -p tcp --dport 5902 -j
> ACCEPT
> iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPTСпасибо тебе большое, reader, за действенную помощь! :)
К сожалению, испытать эти правила пока не смогу, потому что сервак с виртуалками у меня уже отобрали и эксплуатируют вовсю, я до этого временно настроил его по упрощенной схеме - вместо перенаправления портов использовал обычный проброс.
Как только он ко мне вернется на профилактику - тут же испытаю.А пока твои правила в рамочку и на стенку :)
Еще раз огромное спасибо!