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

Тема в разделе "Администрирование серверов", создана пользователем Kub, 16 фев 2014.

Модераторы: mefish, stooper
  1. Kub

    Kub

    Регистр.:
    5 июн 2009
    Сообщения:
    612
    Симпатии:
    477
    Есть 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


    Проверяю открыт ли порт через http://www.hashemian.com/tools/port-scanner.php
    Порт открыт.

    [​IMG]


    Код:
    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? Сейчас программы слушают порт на другом интерфейсе и поэтому открытый порт не видят.
     
  2. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    судя по написанному и применив немного телепатии можно сделать вывод что схема сл
    vps <-> home gw (linux) <-> win7
    тогда совсем не ясно о каких других интерфейсах на вин7 ты говоришЪ
    а вообще для более простого получения real ip используй впн
     
  3. Kub

    Kub

    Регистр.:
    5 июн 2009
    Сообщения:
    612
    Симпатии:
    477
    Мне нужно пробросить порт с VPS который имеет белый статический IP на мой домашний компьютер. Схема такая
    vps (linux) <-> NAT провайдера <-> win7
    Порт наверно пробрасывается, но программы его не видят по непонятным причинам. Я предполагаю что программы слушают порт 25000 в Windows 7 не на том интерфейсе. Но возможно дело в другом. Может что-то ещё нужно сделать на VPS, может что-то в командах не правильно.

    Через VPN пытался это сделать, но пока не получилось. Вот тема https://www.nulled.cc/threads/248428/ подключение устанавливается, но выхода в интернет нет, сайты не загружаются. Но VPS там другой.
     
  4. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    >ssh -R 0.0.0.0:25000:127.0.0.1:50242 root@5.153.8.178

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

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    проброс порта тебе надо настроить в putty
    по поводу темы с vpn, я ее полностью не читал но седя по последним сообщения ты не можешЪ настроить НАТ ? есть нормальные дешевые впс с поддеркой iptables,tun и всего что требудется для vpn
     
  6. Kub

    Kub

    Регистр.:
    5 июн 2009
    Сообщения:
    612
    Симпатии:
    477
    Да, в консоли VPS. А как правильно?


    Через Putty я тоже пытался сделать Remote port forwarding. Вот руководство http://avz.org.ua/wp/2010/06/29/putty-how-to-make-your-windows-useful/ делал по 2. Удалённый проброс порта

    [​IMG]

    но это равносильно вводу команды в консоли 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
     
    Последнее редактирование: 16 фев 2014
  7. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    >но это равносильно вводу команды в консоли VPS что я выше писал.
    не равносильно, то что ты пишешЪ в консоли пробрасывает порт на себя же

    сделай форвардинг через putty, и наблюдай tcpdump-пом что происходит с пакетами
    и проверь правила iptables FORWARD
     
    Kub нравится это.
  8. Kub

    Kub

    Регистр.:
    5 июн 2009
    Сообщения:
    612
    Симпатии:
    477
    Сделай форвардинг через 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 http://www.hashemian.com/tools/port-scanner.php порт 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?
     
    Последнее редактирование: 18 фев 2014
  9. ofcorp

    ofcorp Создатель

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

    Логики нет или я что-то не понял? Если ты за провайдерским натом, так мож они и должны тебе порт пробросить?
     
  10. Kub

    Kub

    Регистр.:
    5 июн 2009
    Сообщения:
    612
    Симпатии:
    477
    Да, видимо всё правильно. Просто SSH Remote port forwarding скорее всего не подходит для работы программ через проброшенный таким образом порт. Потому что на вид всё нормально, но результата нет.

    Это был бы самый лучший вариант, но мой провайдер проброс портов не делает.