Перейти до

Debian, iptables - нужна помощь: Редирект от $1 к $2 на порту.


Рекомендованные сообщения

Всем привет.

У меня был серв на фрибсд, который не перенес грозу:( Теперь приходится все плюшки поднять на Дебиане.

Подскажите пожалуйста, как в Дебиане сделать такую штуку:

Есть сеть, которая натится на некую ip, например 1.1.1.1

Есть абонент, который получает серый ip 172.16.0.100 (но когда денег на счету нет, то 172.22.0.100)

И вот этот абонент установил ip-камеру. И смотрит он эту камеру софтиной на портах 9998 и 9999 например.

1.Как в дебиане сделать чтоб фаервол перекидывал запросы на ip 1.1.1.1:9998 и 1.1.1.1:9999 в сторону абонента 172.16.0.100:9998 и 172.16.0.100:9999 ?

2.Что делать если завтра 2 абонент захочет ip-камеру. Можно ли чтоб запросы на ip 1.1.1.1:788 и 1.1.1.1:789 летели на 172.16.0.100:9998 и 172.16.0.100:9999 ?

Вопрос именно в написании самих команд этого iptables'а... не получается понять сам принцип работы этого iptables'a.

Заранее благодарю за помощь!

Ссылка на сообщение
Поделиться на других сайтах

Если прямой проброс портов

iptables -t nat -A PREROUTING -d $wan_ip -p tcp -m multiport --dport $port,port -j DNAT --to-destination $lan_ip

Если с порта на порт

iptables -t nat -A PREROUTING -d $wan_ip -p tcp -m multiport --dport $port1 -j DNAT --to-destination $lan_ip:port2

Хороший учебник по iptables - https://ru.wikibooks.org/wiki/Iptables

В частности почитайте про действие DNAT.

Відредаговано fet4
Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)

Я так понимаю, что оно пишет в какой-то файл правила, а iptables - это как "пульт управления" фаерволом...
В какой по дефолту файл оно пишет? Можно ли там потом закомментировать эти строки, если нужно проброс портов отменить, например?
 
Если прямой проброс портов 

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m multiport --dport 9998,9999 -j DNAT --to-destination 172.16.0.100

и второй вариант (если с порта на порт):

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m multiport --dport 788 -j DNAT --to-destination 172.16.0.100:9998
iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m multiport --dport 789 -j DNAT --to-destination 172.16.0.100:9999

в моем варианте это так должно получиться? 
А второй вариант можно в 1 правило слепить, если порты через запятую указать? - а как там правильно на $lan_ip указывать несколько портов?

Відредаговано Archy_k
Ссылка на сообщение
Поделиться на других сайтах

Всем привет.

У меня был серв на фрибсд, который не перенес грозу :( Теперь приходится все плюшки поднять на Дебиане.

Подскажите пожалуйста, как в Дебиане сделать такую штуку:

Есть сеть, которая натится на некую ip, например 1.1.1.1

Есть абонент, который получает серый ip 172.16.0.100 (но когда денег на счету нет, то 172.22.0.100)

И вот этот абонент установил ip-камеру. И смотрит он эту камеру софтиной на портах 9998 и 9999 например.

1.Как в дебиане сделать чтоб фаервол перекидывал запросы на ip 1.1.1.1:9998 и 1.1.1.1:9999 в сторону абонента 172.16.0.100:9998 и 172.16.0.100:9999 ?

2.Что делать если завтра 2 абонент захочет ip-камеру. Можно ли чтоб запросы на ip 1.1.1.1:788 и 1.1.1.1:789 летели на 172.16.0.100:9998 и 172.16.0.100:9999 ?

Вопрос именно в написании самих команд этого iptables'а... не получается понять сам принцип работы этого iptables'a.

Заранее благодарю за помощь!

1.Поднимайте новый сервер на знакомой вам ОС

2.Подобные костыли даже не начинайте практиковать.

Или выдавать абоненту реальник или в дальнейшем администрирование этого нагромаждения не пойми чего куда пробросов станет очень сильно затратно

Ссылка на сообщение
Поделиться на других сайтах

Это как бы понятно... но мне нужно решить вопрос на этой машине.

Другой пока нет, увы...

Даже некуда проинсталить... 

Ссылка на сообщение
Поделиться на других сайтах

iptables сохраняет конфиг в /etc/sysconfig/iptables

Нормальные люди напрямую через утилиту действия не совершают, а правят конфиг и делают 'service iptables restart', или как оно там в вашем дистрибутиве делается.

Ссылка на сообщение
Поделиться на других сайтах

Я так понимаю, что оно пишет в какой-то файл правила, а iptables - это как "пульт управления" фаерволом...

В какой по дефолту файл оно пишет? Можно ли там потом закомментировать эти строки, если нужно проброс портов отменить, например?

 

Если прямой проброс портов 

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m multiport --dport 9998,9999 -j DNAT --to-destination 172.16.0.100

и второй вариант (если с порта на порт):

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m multiport --dport 788 -j DNAT --to-destination 172.16.0.100:9998
iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m multiport --dport 789 -j DNAT --to-destination 172.16.0.100:9999

в моем варианте это так должно получиться? 

А второй вариант можно в 1 правило слепить, если порты через запятую указать? - а как там правильно на $lan_ip указывать несколько портов?

 

Нет, по-умолчанию никто ничего никуда не пишет, все хранится в памяти до перезагрузки. iptables и есть фаервол.

Если хотите сохранять в файл и коммитить что либо установите пакет iptables-persistent. Он сохраняет в /etc/iptables/

 

Первый и второй вариант правильные.

Нет в одно правило слепить не получится, только так.

Ссылка на сообщение
Поделиться на других сайтах

 

 

Нет, по-умолчанию никто ничего никуда не пишет, все хранится в памяти до перезагрузки.

То есть, нужно в скрипт его загонять и в rc.local закидывать, чтоб после перезагрузки сервака, правила поднялись автоматом? Я правильно понял? 

 

 

 

Во втором варианте мультипорт нафиг не нужен.

Вот так должно получиться?:

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp --dport 788 -j DNAT --to-destination 172.16.0.100:9998
iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp --dport 789 -j DNAT --to-destination 172.16.0.100:9999

Заранее спасибо!

Ссылка на сообщение
Поделиться на других сайтах

 

Нет, по-умолчанию никто ничего никуда не пишет, все хранится в памяти до перезагрузки.

То есть, нужно в скрипт его загонять и в rc.local закидывать, чтоб после перезагрузки сервака, правила поднялись автоматом? Я правильно понял? 

 

 

 

 

Это костыль, но да, работать будет)

не знаю как там в дебиане, в генте надо писать в /var/lib/iptables/rules-save

при перезагрузке все правила подтянутся автоматом

Відредаговано zulu_Radist
Ссылка на сообщение
Поделиться на других сайтах

Для debian:

/etc/init.d/iptables
 

#! /bin/sh -e

### BEGIN INIT INFO
# Provides:          iptables
# Required-Start:    $remote_fs $network
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: iptables rules
# Description:       iptables rules
### END INIT INFO

set -e

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/atd

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

case "$1" in
    start)
    /sbin/iptables-restore < /etc/default/iptables
    /sbin/sysctl -w net.ipv4.ip_forward=1

    ;;
  stop)
    /sbin/sysctl -w net.ipv4.ip_forward=0
    /sbin/iptables -F
    /sbin/iptables -t nat -F

    ;;
  force-reload|restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: /etc/init.d/iptables {start|stop|restart|force-reload}"
    exit 1
    ;;
esac

exit 0
 

не забыть chmod +x /etc/init.d/iptables
добавить все правила вручную, как минимум для NAT ( iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o $wan_interface -j MASQUERADE ), добавить правила проброса портов, что писали выше.

записать их в файл откуда скрипт берёт ( iptables-save > /etc/default/iptables )

включить автоматический старт/стоп для скрипта ( update-rc.d -f iptables defaults )
всё, можно стартовать:
service iptables start

 

потом можно осторожно апдейтить или править /etc/default/iptables

Відредаговано vvvua
Ссылка на сообщение
Поделиться на других сайтах
То есть, нужно в скрипт его загонять и в rc.local закидывать, чтоб после перезагрузки сервака, правила поднялись автоматом? Я правильно понял? 

Да совершенно верно. Но если Вам не нужны переменные в ваших правилах то можно сохранять правила через iptables-persistent, после перезагрузки он сам их подтянет.

 

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp --dport 788 -j DNAT --to-destination 172.16.0.100:9998
iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp --dport 789 -j DNAT --to-destination 172.16.0.100:9999

Верно. --dport или -m multiport --dport не принципиально важно.

Я для себя лучше чем правила на bash не нашел. Так как в сложных ситуациях требуются циклы, проверки те же переменные.

Відредаговано fet4
Ссылка на сообщение
Поделиться на других сайтах

Все как-то путанно народ пишет. Вы можете написать свой скрипт, который стартует при загрузке, и в котором наколбасить нужные правила. Либо поставить пакет, типа iptables-persistent, который будет делать это сам из файла с правилами.

 

Какого-либо "правильного" способа, как по мне, не существует. Если вы решаете частную задачу, то проще через boot-time пакет. Если делаете универсальное решение, то лучше через скрипт.

Відредаговано vop
Ссылка на сообщение
Поделиться на других сайтах
Вот что я использую. Закинуть в файлик, дать права (chmod a+x) и в автозагрузку

 



#!  /bin/sh


# внешний, реальный IP-адрес шлюза
EXT_IP="1.2.3.1"


#внутренний IP-адрес шлюза, в локальной сети
INT_IP="10.20.30.1"


#внешний интерфейс шлюза. Именно ему присвоен сетевой адрес $EXT_IP
EXT_IF=eth1


#внутренний интерфейс шлюза, с адресом $INT_IP
INT_IF=eth0


#внутренний IP-адрес сервера или компьютера, предоставляющего службы внешнему миру
LAN_IP_DIGI="10.20.30.123"


#внешний порт на шлюзе, к которому происходит подключение из Инета
FAKE_PORT_VIDEO="5120:5130"
FAKE_PORT_HTTP="98"


#порт службы на компьютере внутри сети. Для веб-сервера равен 80, для SMTP - 25 и т.д.
SRV_PORT_VIDEO="5120-5130"
SRV_PORT_HTTP="80"


#Video
iptables -t nat -A PREROUTING -d $EXT_IP -p tcp -m tcp --dport $FAKE_PORT_VIDEO -j DNAT --to-destination $LAN_IP_DIGI:$SRV_PORT_VIDEO
iptables -t nat -A POSTROUTING -d $LAN_IP_DIGI -p tcp -m tcp --dport 5120:5130 -j SNAT --to-source $INT_IP
iptables -t nat -A OUTPUT -d $EXT_IP -p tcp -m tcp --dport 5120:5130 -j DNAT --to-destination $LAN_IP_DIGI
iptables -I FORWARD 1 -i $EXT_IF -o $INT_IF -d $LAN_IP_DIGI -p tcp -m tcp --dport 5120:5130 -j ACCEPT


#HTTP
iptables -t nat -A PREROUTING -d $EXT_IP -p tcp -m tcp --dport $FAKE_PORT_HTTP -j DNAT --to-destination $LAN_IP_DIGI:$SRV_PORT_HTTP
iptables -t nat -A POSTROUTING -d $LAN_IP_DIGI -p tcp -m tcp --dport $SRV_PORT_HTTP -j SNAT --to-source $INT_IP
iptables -t nat -A OUTPUT -d $EXT_IP -p tcp -m tcp --dport $SRV_PORT_HTTP -j DNAT --to-destination $LAN_IP_DIGI
iptables -I FORWARD 1 -i $EXT_IF -o $INT_IF -d $LAN_IP_DIGI -p tcp -m tcp --dport $SRV_PORT_HTTP -j ACCEPT

Відредаговано felixio_01
Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

  • Схожий контент

    • Від alexeya
      Сдам в аренду 2 блока /24. Цена за один блок 750$ в год.
    • Від VAndrey
      Доброго дня!
      Порадьте альтернативу -  порядного LIRa. І чи варто міняти?
      Багато років обслуговувався в LIRa НетАссіст. Ніколи нічого поганого не можу за них сказати. Тільки респект. Завжди все якісно, швидко і порядно. Тільки найкращі відгуки. Всім їх радив!
      Але окрім якісного обслуговування є ще й ціна.
      Вчора прийшов лист від них про підняття цін вдвіччі!?!? Ціна при цьому ж звісно в євро і разом із курсом також зростала щороку.
      Обгрунтування, бо за багато років зросла ціна на електроненергію,  зарплата  (так і курс евро зріс,  відповідно і відрахування LIRу).
      Ну і ще зросли відрахування в RIPE і та й комісія (15%) за перерахування коштів RIPE, бо типу тепер потрібно перераховувати виключно з українських рахунків. Тут можна десь з чимось погодитися напевно. Але знову ж таки підняття вдвіччі в Євро,  то якось,  як на мене занадто.
      Розумію, що все дорожчає. Спробував переговорити,  бо менш стрімке підняття,  але безрезультатно.
       
      Хотів почути думки колег. Варто міняти LIRa? Якщо так,  то на кого?
    • Від YuriyH
      Продам енкодер 8 HDMI в IP , 1U
      Ціна 1400 дол з ПДВ , оплата в грн. по курсу , безготівка.
    • Від corex
      Куплю ip v4 /23 або /24 , писати в особисті 
    • Від tischenkod
      Здам в оренду блок /22. Пропозиції у особисті повідомлення
×
×
  • Створити нове...