SSH port forwarding. Как правильно настроить?

Kub

Мой дом здесь!
Регистрация
5 Июн 2009
Сообщения
624
Реакции
485
Есть VPS. Система Debian 7 32bit, виртуализация OpenVZ. Нужно пробросить порт с сервера для приёма входящих соединений используя SSH port forwarding. Я за NAT провайдера и входящие соединения мне не доступны.
Хочу перенаправить порт сервера 25000 на порт клиента 25000 на моём домашнем компьютере. И через порт 25000 принимать входящие соединения.
Пытаюсь настроить это через SSH Remote port forwarding

В конфиг /etc/ssh/sshd_config добавил
Код:
GatewayPorts yes
AllowTcpForwarding yes


В /etc/sysctl.conf на всякий случай раскомментировал
Код:
net.ipv4.ip_forward = 1


Настраиваю Remote port forwarding такой командой

Код:
ssh -R 25000:127.0.0.1:25000 root@5.153.8.178

Пробовал ещё с параметром -g

-g Allows remote hosts to connect to local forwarded ports.

Код:
ssh -R 25000:127.0.0.1:25000 -g root@5.153.8.178


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

Код:
root@vpshost:~# netstat -nlp  | grep 25000
tcp        0      0 0.0.0.0:25000          0.0.0.0:*              LISTEN      4021/1
tcp6      0      0 :::25000                :::*                    LISTEN      4021/1



Проверяю открыт ли порт через Для просмотра ссылки Войди или Зарегистрируйся
Порт открыт.

h_1391371414_5023069_0a67c8a85f.png



Код:
root@vpshost:~# ifconfig
lo  Link encap:Local Loopback
  inet addr:127.0.0.1  Mask:255.0.0.0
  inet6 addr: ::1/128 Scope:Host
  UP LOOPBACK RUNNING  MTU:16436  Metric:1
  RX packets:10347 errors:0 dropped:0 overruns:0 frame:0
  TX packets:10347 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:0
  RX bytes:3933543 (3.7 MiB)  TX bytes:3933543 (3.7 MiB)
venet0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
  inet addr:127.0.0.2  P-t-P:127.0.0.2  Bcast:0.0.0.0  Mask:255.255.255.255
  UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
  RX packets:177128 errors:0 dropped:0 overruns:0 frame:0
  TX packets:195190 errors:0 dropped:4252 overruns:0 carrier:0
  collisions:0 txqueuelen:0
  RX bytes:52353491 (49.9 MiB)  TX bytes:69291054 (66.0 MiB)
venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
  inet addr:5.153.8.178  P-t-P:5.153.8.178  Bcast:5.153.8.178  Mask:255.255.255.255
  UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

Пробовал с разными портами, например так
Код:
ssh -R 0.0.0.0:25000:127.0.0.1:50242 root@5.153.8.178
но результата пока нет.

Как программам uTorrent, Skype указать что бы они слушали порт 25000 на том интерфейсе на который он сейчас проброшен на мой компьютер с Windows 7? Сейчас программы слушают порт на другом интерфейсе и поэтому открытый порт не видят.
 
судя по написанному и применив немного телепатии можно сделать вывод что схема сл
vps <-> home gw (linux) <-> win7
тогда совсем не ясно о каких других интерфейсах на вин7 ты говоришЪ
а вообще для более простого получения real ip используй впн
 
Мне нужно пробросить порт с VPS который имеет белый статический IP на мой домашний компьютер. Схема такая
vps (linux) <-> NAT провайдера <-> win7
Порт наверно пробрасывается, но программы его не видят по непонятным причинам. Я предполагаю что программы слушают порт 25000 в Windows 7 не на том интерфейсе. Но возможно дело в другом. Может что-то ещё нужно сделать на VPS, может что-то в командах не правильно.

а вообще для более простого получения real ip используй впн
Через VPN пытался это сделать, но пока не получилось. Вот тема Для просмотра ссылки Войди или Зарегистрируйся подключение устанавливается, но выхода в интернет нет, сайты не загружаются. Но VPS там другой.
 
>ssh -R 0.0.0.0:25000:127.0.0.1:50242 root@5.153.8.178

не совсем тогда понимаю где ты это пишешЪ? в консоли впс ? тогда это не правильно
 
проброс порта тебе надо настроить в putty
по поводу темы с vpn, я ее полностью не читал но седя по последним сообщения ты не можешЪ настроить НАТ ? есть нормальные дешевые впс с поддеркой iptables,tun и всего что требудется для vpn
 
>ssh -R 0.0.0.0:25000:127.0.0.1:50242 root@5.153.8.178

не совсем тогда понимаю где ты это пишешЪ? в консоли впс ? тогда это не правильно

Да, в консоли VPS. А как правильно?


Через Putty я тоже пытался сделать Remote port forwarding. Вот руководство Для просмотра ссылки Войди или Зарегистрируйся делал по 2. Удалённый проброс порта

Для просмотра ссылки Войди или Зарегистрируйся

но это равносильно вводу команды в консоли VPS что я выше писал.
Порт в списке прослушиваемых при соединении через Putty с настройками Remote port forwarding.

Код:
root@vpshost:~# netstat -nlp  | grep 25000
tcp        0      0 0.0.0.0:25000          0.0.0.0:*              LISTEN      27836/0
tcp6      0      0 :::25000                :::*                    LISTEN      27836/0
 
Последнее редактирование:
>но это равносильно вводу команды в консоли VPS что я выше писал.
не равносильно, то что ты пишешЪ в консоли пробрасывает порт на себя же

сделай форвардинг через putty, и наблюдай tcpdump-пом что происходит с пакетами
и проверь правила iptables FORWARD
 
  • Нравится
Реакции: Kub
Сделай форвардинг через Putty. В uTorrent прописал "Порт входящих соединений" 25000. Но входящие соединения не открылись.
Порт в списке прослушиваемых при соединении через Putty с настройками Remote port forwarding
Код:
root@vpshost:~# netstat -nlp  | grep 25000
tcp        0      0 0.0.0.0:25000           0.0.0.0:*               LISTEN      4481/0
tcp6       0      0 :::25000                :::*                    LISTEN      4481/0

Если проверить через tcpdump порт 25000, то пакеты через него не идут. В uTorrent у меня шла закачка через порт 25000.
Если проверить через port-scanner Для просмотра ссылки Войди или Зарегистрируйся порт 25000, то во время проверки получается вот что

Код:
root@vpshost:~# tcpdump -i venet0 host 5.153.8.178 and port 25000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on venet0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
09:37:13.687190 IP hashemian.com.53917 > vpshost.25000: Flags [S], seq 454901590, win 5840, options [mss 1460,sackOK,TS val 1394643072 ecr 0,nop,wscale 6], length 0
09:37:13.687223 IP vpshost.25000 > hashemian.com.53917: Flags [S.], seq 820352998, ack 454901591, win 14480, options [mss 1460,sackOK,TS val 472620100 ecr 1394643072,nop,wscale 7], length 0
09:37:13.783108 IP hashemian.com.53917 > vpshost.25000: Flags [.], ack 1, win 92, options [nop,nop,TS val 1394643173 ecr 472620100], length 0
09:37:13.783113 IP hashemian.com.53917 > vpshost.25000: Flags [F.], seq 1, ack 1, win 92, options [nop,nop,TS val 1394643173 ecr 472620100], length 0
09:37:13.783539 IP vpshost.25000 > hashemian.com.53917: Flags [.], ack 2, win 114, options [nop,nop,TS val 472620197 ecr 1394643173], length 0
09:37:13.913071 IP vpshost.25000 > hashemian.com.53917: Flags [F.], seq 1, ack 2, win 114, options [nop,nop,TS val 472620326 ecr 1394643173], length 0
09:37:14.009051 IP hashemian.com.53917 > vpshost.25000: Flags [.], ack 2, win 92, options [nop,nop,TS val 1394643397 ecr 472620326], length 0
^C
7 packets captured
7 packets received by filter
0 packets dropped by kernel

Или так

Код:
root@vpshost:~# tcpdump -i venet0 port 25000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on venet0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
09:46:11.029919 IP hashemian.com.48794 > vpshost.25000: Flags [S], seq 284750489, win 5840, options [mss 1460,sackOK,TS val 1395180339 ecr 0,nop,wscale 6], leng     th 0
09:46:11.029948 IP vpshost.25000 > hashemian.com.48794: Flags [S.], seq 3517972625, ack 284750490, win 14480, options [mss 1460,sackOK,TS val 473157443 ecr 1395     180339,nop,wscale 7], length 0
09:46:11.243829 IP hashemian.com.48794 > vpshost.25000: Flags [.], ack 1, win 92, options [nop,nop,TS val 1395180515 ecr 473157443], length 0
09:46:11.244057 IP hashemian.com.48794 > vpshost.25000: Flags [F.], seq 1, ack 1, win 92, options [nop,nop,TS val 1395180515 ecr 473157443], length 0
09:46:11.244789 IP vpshost.25000 > hashemian.com.48794: Flags [.], ack 2, win 114, options [nop,nop,TS val 473157658 ecr 1395180515], length 0
^C
5 packets captured
5 packets received by filter
0 packets dropped by kernel

Возможно что я не правильно составил правило для проверки tcpdump

Проверил Iptables, правил у меня нет.

Код:
root@vpshost:~# iptables -nvL
Chain INPUT (policy ACCEPT 246K packets, 37M bytes)
pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 289K packets, 52M bytes)
pkts bytes target     prot opt in     out     source               destination


При проверке на моём компьютере в Windows 7, куда я пытаюсь пробросить порты с сервера, после ввода команды

Код:
netstat -ano | find "25000"

Видно что порты пробросились на интерфейс 0.0.0.0

Код:
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\Users\Admin>netstat -ano | find "25000"
  TCP    0.0.0.0:25000          0.0.0.0:0              LISTENING       8276
  TCP    169.254.162.66:25000   169.254.162.66:32972   TIME_WAIT       0
  TCP    [::]:25000             [::]:0                 LISTENING       8276
  UDP    0.0.0.0:25000          *:*                                    8276
  UDP    [::]:25000             *:*                                    8276

C:\Users\Admin>

Возможно что порт 25000 проброшен, но uTorrent слушает порт 25000 не на том интерфейсе на который он сейчас проброшен. Как указать программам чтобы они работали на том интерфейсе, на который сейчас проброшен порт 25000?
 
Последнее редактирование:
Что-то путаница какая-то. Винда у тебя слушает порт 25000, все правильно что там нули. Какой другой интерфейс ты имеешь ввиду?
Сервер у тебя тоже слушает 25000 порт.

Я за NAT провайдера и входящие соединения мне не доступны. И через порт 25000 принимать входящие соединения.
Логики нет или я что-то не понял? Если ты за провайдерским натом, так мож они и должны тебе порт пробросить?
 
Что-то путаница какая-то. Винда у тебя слушает порт 25000, все правильно что там нули. Какой другой интерфейс ты имеешь ввиду?
Сервер у тебя тоже слушает 25000 порт.
Да, видимо всё правильно. Просто SSH Remote port forwarding скорее всего не подходит для работы программ через проброшенный таким образом порт. Потому что на вид всё нормально, но результата нет.

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