Перейти до

как NAT-ить только определенные порты?


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

Народ!

 

Подскажите, пожалуйста, как настроить iptables и скрипт OnConnect, чтобы пускать юзеров _только_ по опрделенным портам в инет. Айпи статический.

к примеру, нужны 25,110,5190. все остальные необходимо запретить...

подкиньте примеры пожалуйста

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

 

 

Подскажите, пожалуйста, как граммотно пускать eDonkey/eMule в инет для получения HighID.

Я делаю так:

$IPT -t nat -A PREROUTING --dst $ext_ip -p tcp --dport 4661 -j DNAT --to-destination 192.168.1.101

$IPT -t nat -A POSTROUTING --dst 192.168.1.101 -p tcp --dport 4661 -j SNAT --to-source $int_ip

$IPT -t nat -A PREROUTING --dst $ext_ip -p udp --dport 4661 -j DNAT --to-destination 192.168.1.101

$IPT -t nat -A POSTROUTING --dst 192.168.1.101 -p udp --dport 4661 -j SNAT --to-source $int_ip

$IPT -t nat -A PREROUTING --dst $ext_ip -p tcp --dport 4672 -j DNAT --to-destination 192.168.1.101

$IPT -t nat -A POSTROUTING --dst 192.168.1.101 -p tcp --dport 4672 -j SNAT --to-source $int_ip

 

 

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

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

Чтобы натить определенные порта напиши правила с ключом --dport где пропиши нужные порты.

 

Насчет edk это довольно сложно, необходимо чтобы вовнутрь к клиенту проходил коннект по порту 4662 (по умолчанию), для этого надо использовать комбинацию DNAT+SNAT, если ты хочешь чтобы это делалось для всех клиентов, заведи на каждого из них по порту и делай НАТ для них на соответствующих клиентов, при этом клиентам надо поменять установленный по умолчанию порт 4662 на тот который ты для них натишь. При этом все работает. Надеюсь получилось не слишком запутанным...

 

Удачи в настройке!

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

а в каких именно цепочках нужно прописать --dport Чтобы натить определенные порты?

 

PREROUTING?

POSTROUTING?

FORWARD?

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

у меня нет MASQUERADE. используется именно НАТ

вот кусочек моего ОнКоннекта:

#transparent squid

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p tcp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p udp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p tcp -m multiport --dport 8082,8083,8091,8100,8101,8102,8103,8080,8888,777 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p udp -m multiport --dport 8082,8083,8091,8100,8101,8102,8103,8080,8888,777 -j REDIRECT --to-port 3128

 

#puskaem na port squida

iptables -t filter -A INPUT -p tcp -s $IP --dport 3128 -j ACCEPT

#sobstvenno NAT

iptables -t nat -A POSTROUTING -s $IP -j SNAT --to-source "реальный айпи"

iptables -t filter -A FORWARD -i eth0 -s $IP -j ACCEPT

iptables -t filter -A FORWARD -d $IP -j ACCEPT

#logging

echo "C `date +%Y.%m.%d-%H.%M.%S` $IP $CASH $TARIFF " >> /var/stargazer/users/$LOGIN/connect.log

 

скажем мне необходимо НАТ-ить только 25,110,21,6669,6667,5190 порты

как и куда их следует прописывать?

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

У меня вот так всё НАТится:

$IPTABLES -A POSTROUTING -t nat -j MASQUERADE -o eth0

 

мабуть тебе можно модифицировать так:

$IPTABLES -t nat -A POSTROUTING -p tcp -s $IP_client --dport 25 -j MASQUERADE -o eth0

Ссылка на сообщение
Поделиться на других сайтах
В этом сценарие я использую SNAT вместо MASQUERADE по ряду причин. Первая -- предполагается, что этот сценарий должен работать на сетевом узле, который имеет постоянный IP адрес. Следующая состоит в том, что SNAT работает быстрее и более эффективно. Конечно, если вы не имеете постоянного IP адреса, то вы должны использовать действие MASQUERADE, которое предоставляет более простой способ трансляции адресов, поскольку оно автоматически определяет IP адрес, присвоенный заданному интерфейсу. Однако, по сравнению с SNAT это действие требует несколько больших вычислительных ресурсов...

Источник:http://iptables-tutorial.frozentux.net Руководство по iptables (Iptables Tutorial 1.1.19)

 

iptables -t filter -A INPUT -p tcp -s $IP --dport 3128 -j ACCEPT

iptables -t nat -A POSTROUTING -p tcp -s $IP -m multiport --dport 5190 -j SNAT --to-source "реальный айпи"

iptables -t nat -A POSTROUTING -p udp -s $IP -m multiport --dport 27020,27015 -j SNAT --to-source "реальный айпи"

iptables -t filter -A FORWARD -i eth0 -s $IP -j ACCEPT

iptables -t filter -A FORWARD -d $IP -j ACCEPT

 

попробовал такой вариант...

все равно не то...

почта работает...хотя не должна по идее

 

неужели все дают своим юзверям полный доступ....по всем портам...

или жалко правилами поделиться? :)

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

А чего бы не довать?

 

Это бредово открывать птом для каждого разнае порты.....одному надо ася, другому skype, а третий дето в инете надыбал забитый интернет пейджер, а кому-то почту надо забрать на каких-то левых портах..........

Что потом постоянно открывать.......

А не геморо будет?

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

удобно ограничить порты бывает когда:

1.Необходимо шейпить траффик по определенным портам(а 3128 к примеру не шейпить, пускать через делей пулс, чтобы кэш отдавался на полной скорости, а все остальное шейпить cbq).

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

3.Когда пользователь редиска :)

 

можно лего диффиренцировать кому какой скрипт выполнять при подключении.

я сделал проверку поля Userdata0(свойства клиента) на то какой скрипт следует использовать.

 

 

#!/bin/bash

LOGIN=$1

IP=$2

CASH=$3

ID=$4

TEST="Userdata0=Test"

 

TARIFF=`grep Userdata0= /var/stargazer/users/$LOGIN/conf`

 

if [ "$TARIFF" = "$TEST" ]; then

 

echo "Test!!!" >> /var/stargazer/users/$LOGIN/connect.log

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p tcp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p udp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p tcp -m multiport --dport 8082,8083,8091,8100,8101,8102,8103,8080,8888,777 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p udp -m multiport --dport 8082,8083,8091,8100,8101,8102,8103,8080,8888,777 -j REDIRECT --to-port 3128

 

iptables -t filter -A INPUT -p tcp -s $IP --dport 3128 -j ACCEPT

iptables -t nat -A POSTROUTING -p udp -s $IP -m multiport --dport 27020,5190 -j SNAT --to-source "реальный айпи"

iptables -t filter -A FORWARD -i eth0 -s $IP -j ACCEPT

iptables -t filter -A FORWARD -d $IP -j ACCEPT

 

echo "C `date +%Y.%m.%d-%H.%M.%S` $IP $CASH $TARIFF " >> /var/stargazer/users/$LOGIN/connect.log

 

else

 

echo "DSL" >> /var/stargazer/users/$LOGIN/connect.log

 

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p tcp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p udp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p tcp -m multiport --dport 8082,8083,8091,8100,8101,8102,8103,8080,8888,777 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -s $2 -d ! 192.168.1.1 -p udp -m multiport --dport 8082,8083,8091,8100,8101,8102,8103,8080,8888,777 -j REDIRECT --to-port 3128

 

 

iptables -t filter -A INPUT -p tcp -s $IP --dport 3128 -j ACCEPT

iptables -t nat -A POSTROUTING -s $IP -j SNAT --to-source "реальный айпи"

iptables -t filter -A FORWARD -i eth0 -s $IP -j ACCEPT

iptables -t filter -A FORWARD -d $IP -j ACCEPT

echo "C `date +%Y.%m.%d-%H.%M.%S` $IP $CASH $TARIFF " >> /var/stargazer/users/$LOGIN/connect.log

fi

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

Для получения HighID тебе нужно порт пробросить в внутреннюю сеть

один порт один пользователь в внутренней сети

 

решение

пробрасывать разные порты

 

соответственно на клиенте поставить нужный порт

Ссылка на сообщение
Поделиться на других сайтах
сделай по умолчанию политики в DROP

вот так:

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

а потом разрешай те порты, которые тебе нужно

 

у меня стоит политика Drop по умолчанию....

вопрос в том и заключается, как корректно разрешить только необходимые порты юзерам.

 

пробую разные варианты...болт

 

вот последний, теперь с форвардом..... не работает

 

iptables -t filter -A INPUT -p tcp -s $IP --dport 3128 -j ACCEPT

iptables -t nat -A POSTROUTING -s $IP -j SNAT --to-source "real ip"

iptables -t filter -A FORWARD -i eth0 -s $IP -d ! 192.168.1.1 -p tcp -m multiport -dport 25,110,5190 -j ACCEPT

iptables -t filter -A FORWARD -d $IP -j ACCEPT

 

прошу именно ЖИВОЙ, рабочий пример....не теорию.....

помогите, плз.

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

да :tongue:

но ведь не работает :bue:

потому и прошу рабочий пример...

такое впечатление, что либо никто не знает....

либо я сильно простой вопрос задал...

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

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

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

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

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

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

Вхід

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

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

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

×
×
  • Створити нове...