LINUX.ORG.RU

проброс порта 3389 извне (vpn) на компьютер локальной сети


0

1

Добрый вечер!

Такая вот задача простая, но по неопытности решить её не получается.

Имеется: 1. Локальная сеть - 192.168.3.0/24. 2. На компьютере 192.168.3.2 (eth0) настроен vpn-pptp (ppp0) - соединение установлено - фиксированный IP адрес vpn: 192.168.1.138. Система: Ubuntu 12.04 64bit. 3. В локальной сети есть ещё один компьютер 192.168.3.32 - на нём RDP сервер (порт: 3389). 4. Извне (со стороны vpn сервера) по vpn есть доступ к ПК 192.168.1.138 (192.168.3.2).

Задача: Пробросить порт 3389 (RDP) ИЗВНЕ, через vpn соединение -> на компьютер 192.168.3.32 локальной сети. На самом компьютере 192.168.3.2 (192.168.1.138) порт 3389 не используется.

На данный момент в iptables дело обстоит так:

 iptables-save
# Generated by iptables-save v1.4.12 on Thu Feb  7 19:26:57 2013
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1:124]
:POSTROUTING ACCEPT [1:124]
-A PREROUTING -d 192.168.1.138/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.3.32
COMMIT
# Completed on Thu Feb  7 19:26:57 2013
# Generated by iptables-save v1.4.12 on Thu Feb  7 19:26:57 2013
*filter
:INPUT ACCEPT [42:3867]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [17:2352]
-A FORWARD -d 192.168.3.32/32 -i ppp0 -o eth0:1 -p tcp -m tcp --dport 3389 -j ACCEPT
COMMIT
# Completed on Thu Feb  7 19:26:57 2013

Прошу помощи!


Это все существующие правила? По ним получается, что TCP пакет придёт извне через ppp0 и далее уйдёт в локалку. А как ответный TCP пакет обратно вернётся в ppp0 из локалки?

Я бы добавил "-i ppp0" в «PREROUTING».

Посмотри далее, до какой именно машины в локалке доходит TCP пакет, запустив wireshark на роутере (192.168.1.138) и на целевой машине (192.168.3.32). И настрой обратный маршрут для прохождения TCP пакетов от целевой машины через роутер в ppp0.

justAmoment ★★★★★ ()
Ответ на: комментарий от justAmoment

не совсем понял

Спасибо за ответ!

чего то я недопонимаю... видимо принципов работы «iptables»...

на «Linux» совсем недавно

вот, например, в windows есть такая прога «3proxy-0.6.1», и что бы пробросить порт так как я хочу, надо всего лишь в конфиге добавить следующее:

tcppm 3389 192.168.3.32 3389
и всё работает! НО это windows!

wireshark - такую утилиту я не знаю, сейчас попробую...

babel ()
Ответ на: комментарий от justAmoment

wireshark показывает

1	0.000000	192.168.1.130	192.168.1.138	TCP	64	50993 > ms-wbt-server [SYN] Seq=0 Win=8192 Len=0 MSS=1360 SACK_PERM=1
2	3.001878	192.168.1.130	192.168.1.138	TCP	64	50993 > ms-wbt-server [SYN] Seq=0 Win=8192 Len=0 MSS=1360 SACK_PERM=1
3	8.998286	192.168.1.130	192.168.1.138	TCP	64	50993 > ms-wbt-server [SYN] Seq=0 Win=8192 Len=0 MSS=1360 SACK_PERM=1
babel ()
Ответ на: wireshark показывает от babel

Вот, ты видишь первый шаг в цепочке действий.

remote VPN (192.168.1.130:50993) --> ppp0 --> (192.168.1.138:3389) Router

Теперь на втором шаге тебе этот пакет нужно отфорвардить в локалку через dnat.

Посмотри, что показывает

# cat /proc/sys/net/ipv4/ip_forward
justAmoment ★★★★★ ()
Ответ на: комментарий от Pinkbyte

готовый ответ

спасибо! Понимаю, знать принципы необходимо! Статейку бы доходчивую для этого я б не прочь почитать и усвоить по iptables. Но ведь я за этим и обратился на форум, что бы мне дали готовый ответ: «Как правильно прописать в iptables нужные строчки, что бы моя задача была решена».

На данный момент я имею следующее:

iptables -A FORWARD -i ppp0 -d 192.168.3.32 -p tcp --dport 5900 -j ACCEPT

и

iptables -t nat -A PREROUTING -i ppp0 --dst 192.168.1.138 -p tcp --dport 3389 -j DNAT --to-destination 192.168.3.32
... в сравнение с windows строчкой:
tcppm 3389 192.168.3.32 3389
в Linux получается задействовано куда больше параметров, но в результате на windows`е работает и с такой короткой строчкой а в Linux нет.

Спрашивается, какой и где ещё нужно задать параметр , или включить в Linux, что бы затеянное свершилось по аналогии с windows!?

Данные конфигурации сети я указал...и на основе этих данных должно быть готовое решение, поможете?

babel ()
Ответ на: что показывает # cat /proc/sys/net/ipv4/ip_forward от babel

cat /proc/sys/net/ipv4/ip_forward
1

Это ок.

Теперь проверь на каком порту у тебя работает 'local server RDP'.

# nmap 192.168.3.32

Для теста можно попробовать залогиниться по локалке на сервер RDP (192.168.3.32) через программу Remmina, установленную на Router(192.168.3.2).

justAmoment ★★★★★ ()
Ответ на: комментарий от justAmoment

Результат # nmap 192.168.3.32

Host is up (0.00052s latency).
Not shown: 974 closed ports
PORT     STATE SERVICE
80/tcp   open  http
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
1096/tcp open  unknown
1098/tcp open  unknown
1099/tcp open  unknown
1121/tcp open  unknown
1145/tcp open  unknown
2034/tcp open  scoremgr
2035/tcp open  imsldoc
2045/tcp open  cdfunc
3260/tcp open  iscsi
3261/tcp open  unknown
3389/tcp open  ms-term-serv
4000/tcp open  remoteanything
4444/tcp open  krb524
4445/tcp open  unknown
5033/tcp open  unknown
5800/tcp open  vnc-http
5900/tcp open  vnc
8009/tcp open  ajp13
8010/tcp open  xmpp
8083/tcp open  unknown
8093/tcp open  unknown
9000/tcp open  cslistener

понятно, что:

3389/tcp open  ms-term-serv

babel ()
Ответ на: на 192.168.3.32 по RDP заходит! от babel

Теперь нужно включить wireshark и смотреть наличие сразу на всех интерфейсах пакетов при включенных простых правилах

# iptables -I FORWARD -j ACCEPT
# iptables -t nat -I PREROUTING -i ppp0 --dst 192.168.1.138 -j DNAT --to-destination 192.168.3.32
# iptables -t nat -I POSTROUTING -s 192.168.3.32 -o ppp0 -j SNAT --to-source 192.168.1.138
И попытаться войти с remote VPN server на RDP server через Router.

justAmoment ★★★★★ ()
Ответ на: на 192.168.3.32 по RDP заходит! от babel

Вот так выглядела бы строчка на «mikrotik router os» - она ведь тоже на базе Linux: /ip firewall nat> print

0   chain=dstnat action=dst-nat to-addresses=192.168.3.32 to-ports=3389
     protocol=tcp dst-port=3389
- это реально рабочий вариант (где 0 - это номер правила).

Так как же в Linux Ubuntu это сделать? Может REDIRECT надо использовать?

babel ()
Ответ на: комментарий от justAmoment

без результатов

wireshark выдаёт те же результаты, но вот у меня появилось сомнение: eth0 - у меня настроен на два ip адреса (eth0:1 - как раз 192.168.3.2), а wireshark не видит «eth0:1» - как быть?

babel ()
Ответ на: без результатов от babel

eth0 - у меня настроен на два ip адреса (eth0:1 - как раз 192.168.3.2)

А eth0 какой адрес?

а wireshark не видит «eth0:1» - как быть?

временно всё сделать на eth0 по возможности для проверки работоспособности схемы.

justAmoment ★★★★★ ()

Обратный роутинг на 192.168.3.32 настрой, чтобы он не на шлюз по-умолчанию возвращал пакеты, а на 192.168.3.2

anonymous ()
iptables -t nat -A PREROUTING -p tcp --dst 192.168.3.2 --dport 3389 -j DNAT --to-destination 192.168.3.32:3389
iptables -t nat -I POSTROUTING -p tcp --dst 192.168.3.32 --dport 3389 -j SNAT --to 192.168.3.2
echo 1 > /proc/sys/net/ipv4/ip_forward
kostik87 ★★★★★ ()
Ответ на: комментарий от justAmoment

Файл: /etc/network/interfaces

auto lo
iface lo inet loopback

iface eth0:1 inet static
address 192.168.2.116
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 192.168.2.1
auto eth0:1

iface eth0 inet static
address 192.168.3.2
netmask 255.255.255.0
auto eth0
babel ()
Ответ на: комментарий от justAmoment

Результаты wireshark

iptables -t nat -A PREROUTING -p tcp --dst 192.168.3.2 --dport 3389 -j DNAT --to-destination 192.168.3.32:3389
iptables -t nat -I POSTROUTING -p tcp --dst 192.168.3.32 --dport 3389 -j SNAT --to 192.168.3.2
echo 1 > /proc/sys/net/ipv4/ip_forward
1	0.000000	192.168.1.130	192.168.1.138	TCP	64	54118 > ms-wbt-server [SYN] Seq=0 Win=8192 Len=0 MSS=1360 SACK_PERM=1

2	0.000032	192.168.1.138	192.168.1.130	TCP	56	ms-wbt-server > 54118 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0

3	0.631831	192.168.1.130	192.168.1.138	TCP	64	54118 > ms-wbt-server [SYN] Seq=0 Win=8192 Len=0 MSS=1360 SACK_PERM=1

4	0.631857	192.168.1.138	192.168.1.130	TCP	56	ms-wbt-server > 54118 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0

5	1.258036	192.168.1.130	192.168.1.138	TCP	64	54118 > ms-wbt-server [SYN] Seq=0 Win=8192 Len=0 MSS=1360 SACK_PERM=1

6	1.258066	192.168.1.138	192.168.1.130	TCP	56	ms-wbt-server > 54118 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
babel ()
Ответ на: Результаты wireshark от babel

не хочет...

# iptables -I FORWARD -j ACCEPT
# iptables -t nat -I PREROUTING -i ppp0 --dst 192.168.1.138 -j DNAT --to-destination 192.168.3.32
# iptables -t nat -I POSTROUTING -s 192.168.3.32 -o ppp0 -j SNAT --to-source 192.168.1.138

и с такими записями тоже самое...

хм, может есть какая то утилита? типа той, про которую я упоминал? в которой три слова и всё работает...

babel ()
Ответ на: не хочет... от babel

При таких настройках происходит перенаправление всех входящих портов из ppp0 на 192.168.3.32. Так как по этому адресу я тебя поднят сервис www, попробуй при них зайти:

  1. С Router на адрес http://192.168.3.32:80
  2. С remote VPN server на адрес http://192.168.1.138:80
justAmoment ★★★★★ ()
Ответ на: не хочет... от babel

Re: не хочет...

-j SNAT --to-source 192.168.1.138

-j SNAT --to-source 192.168.3.2

Если уж делаете двойной нат, то хоть правильно делайте

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.