iptables:возможно ли такое
Модераторы: SLEDopit, Модераторы разделов
-
shas
- Сообщения: 6
- ОС: FC7
iptables:возможно ли такое
Hi!
Сделал попытки реализовать следующее и закрались смутные сомнения:"А возможно ли оно".
Задача вроде бы банальная.
Есть сервер с внешним (ххх.ххх.ххх.ххх) и внутренним (192.168.0.5) адресами.
На этом сервере запущена некая программа, которая слушает только на внутреннем интерфейсе
порт 2000.
Надо, подключившись с внешнего интерфейса, попасть на внутренний на порт 2000.
Из вне на компьютер во внутренней сети пробросить соединение не составляет проблемы.
Но в поставленной выше задаче такие способы почему-то не срабатывают.
Т.о. вариации на тему
-A PREROUTING -p tcp -d ххх.ххх.ххх.ххх --dport 2000 -j DNAT --to-destination 192.168.0.5:2000
не решили проблему.
Подскажите, плиз, как реализовать желаемое?
Сделал попытки реализовать следующее и закрались смутные сомнения:"А возможно ли оно".
Задача вроде бы банальная.
Есть сервер с внешним (ххх.ххх.ххх.ххх) и внутренним (192.168.0.5) адресами.
На этом сервере запущена некая программа, которая слушает только на внутреннем интерфейсе
порт 2000.
Надо, подключившись с внешнего интерфейса, попасть на внутренний на порт 2000.
Из вне на компьютер во внутренней сети пробросить соединение не составляет проблемы.
Но в поставленной выше задаче такие способы почему-то не срабатывают.
Т.о. вариации на тему
-A PREROUTING -p tcp -d ххх.ххх.ххх.ххх --dport 2000 -j DNAT --to-destination 192.168.0.5:2000
не решили проблему.
Подскажите, плиз, как реализовать желаемое?
-
Denikin
- Сообщения: 119
Re: iptables:возможно ли такое
может быть это поможет http://opennet.ru/docs/RUS/iptables/#DNATTARGET
-
shas
- Сообщения: 6
- ОС: FC7
Re: iptables:возможно ли такое
Denikin писал(а): ↑30.01.2010 20:37может быть это поможет http://opennet.ru/docs/RUS/iptables/#DNATTARGET
Может и поможет, но я не знаю как это применить в моём случае.
В подобных примерах подразумевается, что адрес внутренней сети принадлежит
другому компьютеру, а не самому серверу.
Вообщем пробовал я варианты с DNAT'ом, но не помогло.
Отсюда два варианта: неправильно пробовал или то, что мне надо - невозможно.
-
mandreika
- Сообщения: 217
- ОС: Debian 3,4,5,6
Re: iptables:возможно ли такое
Попробуй программный редирект rinetd или xinetd+redirect на 127.0.0.1
или
iptables -t nat -A PREROUTING -p tcp --dport 2000 -j DNAT --to-destination 127.0.0.1
iptables -t nat -A POSTROUTING -p tcp --dport 2000 -j SNAT --to-source 127.0.0.1
или
iptables -t nat -A PREROUTING -p tcp --dport 2000 -j DNAT --to-destination 127.0.0.1
iptables -t nat -A POSTROUTING -p tcp --dport 2000 -j SNAT --to-source 127.0.0.1
-
shas
- Сообщения: 6
- ОС: FC7
Re: iptables:возможно ли такое
Спасибо за ответы, но не работает.
Для чистоты эксперимента поступил следующим образом.
Набросал следующую программу:
#!/usr/bin/perl -w
use strict;
use IO::Socket;
my $quit=0;
$SIG{INT}=sub {$quit=1};
my $listen_socket = IO::Socket::INET->new(LocalPort=>5000,
Listen=>5,
Proto=>'tcp',
Reuse=>1,
Timeout=>3600);
die "Error 1:$@" unless $listen_socket;
warn "Waiting for connection...\n";
my $count=0;
while(!$quit){
next unless my $conn=$listen_socket->accept;
$count++;
warn "$count\n";
$conn->close;
}
$listen_socket->close;
warn "Bye!\n"
Вообщем все просто:открыли сокет и слушаем порт 5000. Если что-то пришло - выводим $count.
Если в открытии сокета не указывать LocalAddr, то программа слушает все интерфейсы.
Можно проверить:
telnet 192.168.0.5 5000
telnet 127.0.0.1 5000
telnet xxx.xxx.xxx.xxx 5000
приводят к реакции программы (xxx.xxx.xxx.xxx-внешний IP-шник).
Теперь добавим в открытие сокета конкретный интерфейс:
my $listen_socket = IO::Socket::INET->new(LocalAddr=>'127.0.0.1',
LocalPort=>5000,
Listen=>5,
Proto=>'tcp',
Reuse=>1,
Timeout=>3600);
Теперь к реакции программы приводит только
telnet 127.0.0.1 5000
Так вот вопрос, возможно ли с помощью iptables добиться ответа программы
теперь подключившись с других сетевых интерфейсов?
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: iptables:возможно ли такое
как-то уже обсуждалось тут такое. По-моему пришли к тому, что это невозможно.
-
shas
- Сообщения: 6
- ОС: FC7
Re: iptables:возможно ли такое
Т.е. получается, что если интересующая меня программа запущена на каком-либо компьютере
во внутренней сети, отличном от компьютера, через который осуществляется доступ к внутренней
сети из вне, то задача решается самым тривиальным способом - port forwarding.
Но если все это происходит в рамках одного компьютера, то задача не решается вовсе.
А жаль!
-
keir
- Сообщения: 317
- ОС: linux
Re: iptables:возможно ли такое
Лично у меня эта задача вполне себе решается.
Стоит сервер с двумя интерфейсами vlan1616, 193.169.xxx.xxx и eth0, 192.168.0.1,
требуется обращаться к 192.168.0.1:139 и 192.168.0.1:445 (samba, которая слушает только домашнюю сеть) с внешней стороны. Вот правила:
Надо указать входное устройство. Ну а -s это уже для пущей безопасности.
Стоит сервер с двумя интерфейсами vlan1616, 193.169.xxx.xxx и eth0, 192.168.0.1,
требуется обращаться к 192.168.0.1:139 и 192.168.0.1:445 (samba, которая слушает только домашнюю сеть) с внешней стороны. Вот правила:
Код: Выделить всё
iptables -t nat -I PREROUTING -i vlan1616 -p tcp -s 10.42.194.0/24 -d 193.169.xxx.xxx/32 --dport 139 -j DNAT --to-destination 192.168.0.1:139
iptables -t nat -I PREROUTING -i vlan1616 -p tcp -s 10.42.194.0/24 -d 193.169.xxx.xxx/32 --dport 445 -j DNAT --to-destination 192.168.0.1:445Надо указать входное устройство. Ну а -s это уже для пущей безопасности.
Trust №1
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: iptables:возможно ли такое
вспомнил. в той теме софтина, слушающая только на внутреннем интерфейсе принимала сообщения только с адресов внутренней сети. и вроде как именно такая задача была помечена как нерешаемая 
-
Alexxx
- Сообщения: 892
- Статус: --==XXX==--
- ОС: Archlinux current
Re: iptables:возможно ли такое
Странно всё это...
Я squid пробрасываю наружу, когда надо следующим:Всё работает
Я squid пробрасываю наружу, когда надо следующим:
Код: Выделить всё
$IPT -t nat -A PREROUTING -p tcp --dport 3128 -j DNAT --to-destination 192.168.10.1
$IPT -A FORWARD -i $INET_IFACE -p tcp --dport 3128 -m state --state NEW -j ACCEPT-
pelmen
- Сообщения: 1268
- ОС: debian
Re: iptables:возможно ли такое
Ну у тебя сквид поймает пакеты, в которых адрес отправителя - внешний адрес клиента из интернета, а ТА утилита такие пакеты отбрасывала, типа "хочу только 192.168.0.0/24"
-
Frank
- Сообщения: 1059
- ОС: Ubuntu, Debian
Re: iptables:возможно ли такое
Раз программа слушает loopback (127.0.0.1) интерфейс, то пробрасывать порт надо будет дважды: один раз - из интернета во внутресеть, на НАТящем сервере, и второй раз - непосредственно на самом компьютере с этой софтиной - из внутрисети в loopback интерфейс.

-
pelmen
- Сообщения: 1268
- ОС: debian
Re: iptables:возможно ли такое
Два раза - да, но там такая задача стояла специфическая:
Комп один, подключен к интернету (внешний адрес), на нем стоит софтина, которая так коряво написана, что к ней можно подключиться только из сетей класса С. Вот и решили тогда, что эта задача одним компом не решается. Пытался найти тему - но это гиблое дело. Она года 2 назад поднималась.
Комп один, подключен к интернету (внешний адрес), на нем стоит софтина, которая так коряво написана, что к ней можно подключиться только из сетей класса С. Вот и решили тогда, что эта задача одним компом не решается. Пытался найти тему - но это гиблое дело. Она года 2 назад поднималась.
-
shas
- Сообщения: 6
- ОС: FC7
Re: iptables:возможно ли такое
Я эту программу просто для проверки сделал.
И loopback тоже взял наобум.
Пусть сокет создается на внутреннем интерфейсе:
my $listen_socket = IO::Socket::INET->new(LocalAddr=>'192.168.0.5',
LocalPort=>5000,
Listen=>5,
Proto=>'tcp',
Reuse=>1,
Timeout=>3600);
Я могу получить реакцию программы в таком случае если нахожусь во внешней сети?
-
expdot
- Сообщения: 176
- ОС: Fedora 13, Win Vista
Re: iptables:возможно ли такое
можно поднять промежуточный интерфейс. ищи про ifb
заставить программу слушать с него
затем по порту перенаправлять пакеты с внешнего и внутреннего интерфейса на псевдо интерфейс
вот пример
конечно, в таком виде не будет работать, но идея понятна
заставить программу слушать с него
затем по порту перенаправлять пакеты с внешнего и внутреннего интерфейса на псевдо интерфейс
вот пример
Код: Выделить всё
# создаем псевдо устройство
modprobe ifb
ip link set dev ifb0 up
# перенаправляем с внутреннего порта
tc filter add dev $LAN parent ffff: protocol ip prio 10 u32 \
match u32 0 0 match u32 dport $PORT 0xff flowid 1:1 \
action mirred egress redirect dev ifb0
# перенаправляем с внешнего порта
tc filter add dev $WAN parent ffff: protocol ip prio 10 u32 \
match u32 0 0 match u32 dport $PORT 0xff flowid 1:1 \
action mirred egress redirect dev ifb0конечно, в таком виде не будет работать, но идея понятна
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: iptables:возможно ли такое
expdot писал(а): ↑01.02.2010 23:22Код: Выделить всё
# создаем псевдо устройство modprobe ifb ip link set dev ifb0 up # перенаправляем с внутреннего порта tc filter add dev $LAN parent ffff: protocol ip prio 10 u32 \ match u32 0 0 match u32 dport $PORT 0xff flowid 1:1 \ action mirred egress redirect dev ifb0 # перенаправляем с внешнего порта tc filter add dev $WAN parent ffff: protocol ip prio 10 u32 \ match u32 0 0 match u32 dport $PORT 0xff flowid 1:1 \ action mirred egress redirect dev ifb0
-
expdot
- Сообщения: 176
- ОС: Fedora 13, Win Vista
Re: iptables:возможно ли такое
я тоже боюсь некоторых конструкций, но если разобраться то в целом ничего 
если собираетесь изучать то читайте lartc
если собираетесь изучать то читайте lartc
-
Alex2ndr
- Сообщения: 443
- ОС: Debian Lenny
Re: iptables:возможно ли такое
[offtop]
Да - синтаксис tc просто страшен
Если уж хотите почитать то lartc не особо советую - мутно написано. Вот хорошая статейка по HTB - http://www.opennet.ru/base/net/htb_manual.txt.html - гораздо приятнее читается
[offtop]
Да - синтаксис tc просто страшен
Если уж хотите почитать то lartc не особо советую - мутно написано. Вот хорошая статейка по HTB - http://www.opennet.ru/base/net/htb_manual.txt.html - гораздо приятнее читается
[offtop]
-
DSS
- Сообщения: 390
-
shas
- Сообщения: 6
- ОС: FC7
Re: iptables:возможно ли такое
Попробовал только с помощью xinetd, но с тем же результатом.
Похоже при данных начальных условиях задача не решается,
либо решается уж совсем сложными решениями.
можно поднять промежуточный интерфейс. ищи про ifb
заставить программу слушать с него
В моей тестовой программе я могу менять интерфейсы, но в той, ради которой
задавался изначальный вопрос, к сожалению нет.
Всем большое спасибо за участие в обсуждении.
Думаю тему можно закрывать.