Перейти до

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 користувачів

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

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

    • Від axl72
      Після апгрейду сервера виявилось, що пакет flow-tools, що був у Дебіан 10, зник , починаючи з версії 11. Пошук по офсайту не дав ніяких пояснень. Може шановне панство підкаже, який пакет передбачений на заміну flow-tools для реалізації netflow-коллектора? Чи не гаяти часу і збирати самостійно?..
    • Від Туйон
      Доброго вечера!
      Нахожусь в Кривом Роге, закупаю трафик у местного провайдера, а так же небольшое количество IP.
      Раньше сайты типа 2ip.ua однозначно писали местоположение что это Кривой Рог.
      А теперь пишут что это Новотроицкое, Херсонская область.
      У некоторых людей перестали открываться определенные сайты, не работает антивирус Аваст, пишет, мол, в этом регионе мы не работаем.
      Т.е. мои айпишники считают временно оккупированной территорией.
      Это как, просто невезение, или есть способ решения проблемы?
      Вышестоящий провайдер сказал, мол, у него то же самое но пользователи не жалуются.
      Да и у меня пока по сути один человек, какой-то программист, но тенденция напрягает.
      Сразу отвечу, что аплинк менять не собираюсь.
      Так же аплинк может выдать другие IP из схожих подсетей но там та же ситуация.
    • Від Дядя Рома
      На роутере сделал правила, собираю в блэклист адреса пытающихся подобрать пароль. Набил уже больше 50 тыс.  Роутер в общем переваривает такое количество, но всё равно, как-то многовато их. Пробовал объединять в ручную, очень долго получается, не реально всё перебрать. Нормальных сервисов которые бы это делали именно по AS провайдера. проверяя в онлайн WhoIs не нашёл. 
      Куда копать, как автоматизировать?
    • Від alexcom
      Продам /24.
      $37 (торг)
       
      Всі питання в особисті.
    • Від dummy
      Здам в оренду блок /24 IPv4
×
×
  • Створити нове...