Как мне перенаправить порт, доступный миру, на моем Mac?

1

Я понимаю, что есть много информации о переадресации портов, но вот моя конкретная ситуация.

Мне нужно использовать Remote in (через VNC) для моего Mac. По умолчанию сервер Mac Remote Sharing прослушивает порт 5900. Это было бы хорошо, если бы моя компания не блокировала входящие соединения через порт 5900!

Тем не менее, он разрешает порт 3389. Поэтому я пытаюсь настроить его так, чтобы я мог прослушивать соединения через порт 3389 и пересылать их на 5900.

Вот что я попробовал: ssh 127.0.0.1 -L3389:127.0.0.1:5900

Это не совсем то, что я хочу, потому что тогда будут приниматься только подключения от 127.0.0.1 через порт 3389.

 netstat -an | egrep 'Proto|LISTEN'
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp6       0      0  *.5900                 *.*                    LISTEN
tcp4       0      0  *.5900                 *.*                    LISTEN
tcp4       0      0  127.0.0.1.3389         *.*                    LISTEN

Мне нужно слушать из мира, *на порт 3389. Как я могу сделать это?

Shamoon
источник
Обычно программное обеспечение VNC позволяет вам указать, какой порт слушать в настройках. Есть ли вариант для этого?
Colyn1337
Вы писали, что межсетевой экран вашей компании заблокирует 5900. Исходящий или входящий? А откуда, куда вы будете подключаться? Где твой Mac? И не могли бы вы подключиться к любой услуге на вашем Mac? Откуда вы будете устанавливать соединение с вашим Mac? А какие порты вы могли бы использовать исходящие?
UsersUser

Ответы:

1

Ваш вопрос немного конкретен, трудно дать прямые ответы, не зная некоторых вещей:

  1. Можете ли вы подключиться к порту VNC по умолчанию извне - скажем, из дома друга, где ваша работа не блокирует вас? Если это так, вы можете изменить порт, который VNC прослушивает, на 3389 и проверить его. Как изменить используемый по умолчанию номер экрана общего доступа / порта VNC в Mac OS X?

  2. Упомянутая вами команда ssh должна запускаться с СОЕДИНИТЕЛЬНОЙ машины, а не с «сервера». Таким образом, вы бы запустить:

    ssh address.of.your.mac -L9999:127.0.0.1:5900
    

    и затем подключите VNC к localhost: 9999 на вашем клиентском компьютере. Я использую 9999 в качестве примера, поскольку он, вероятно, не используется, и 5900 может быть, если ваш клиент Mac, и 3389, если ваш клиент Windows.

Чтобы быть понятным: вам нужно будет иметь возможность подключиться по ssh к вашему Mac с работы, число после -L - это порт, к которому вы подключаетесь на подключенном компьютере (localhost), 127.0.0.1:5900 - это то, где VNC уже прослушивает ваш (удаленный) Mac.

  1. Я также подумал бы о VPN, чтобы обойти ограничения работы (и для безопасности). OpenVPN может легко работать через порт 443 (HTTPS), который, вероятно, разрешен, и даже будет работать через прокси-сервер, если ваша работа ограничивает доступ к Интернету таким образом. Настроить это не слишком сложно, но выходит за рамки этого вопроса.
heurist
источник
1

Вместо переадресации портов вы можете изменить порт, который launchdпрослушивает соединения VNC. ( launchdпрослушивает от имени screensharingdи запускается screensharingdпри попытке подключения).

screensharingd является сервером VNC по умолчанию в OS X. Если вы используете Apple Remote Desktop (иначе ARD, «Удаленное управление») вместо этого, эти инструкции, вероятно, должны быть несколько изменены.

редактировать /System/Library/LaunchDaemons/com.apple.screensharing.plist

Найдите эту пару ключ / значение:

<key>SockServiceName</key>
<string>vnc-server</string>

И изменить это на это:

<key>SockServiceName</key>
<string>3389</string>

Тогда вам, вероятно, потребуется перезагрузить компьютер или использовать launchctlего launchdдля перезагрузки этого списка.

Затем в вашем VNC-клиенте укажите порт 3389. Например, встроенный клиент VNC OS X использует URL-адреса, так что вы можете передать его vnc://username:password@host.example.com:3389/. Или оставьте username:passwordтак, чтобы вас попросили.

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

Spiff
источник
0

Вы можете попробовать -Dопцию с ssh, которая является динамической переадресацией портов. Так что это может выглядеть так:ssh -D 3389 yourAccount@yourDomain.com

Я сделал это вчера и вспоминаю это по памяти, но это основа этого. Как только эта команда сработает, вы просто вводите свой пароль и настраиваете свое приложение для прослушивания на указанном порту - 3389 в вашем случае с 127.0.0.1 в качестве IP-адреса.

Я думаю, что это создает своего рода SOCKS прокси с использованием ssh.

: D

user_loser
источник
0

Я думаю, вы ищете что-то вроде этого , эквивалент Mac для iptables.

У меня нет Mac, поэтому я не могу проверить это сам, но я бы предложил попробовать

sudo ipfw add fwd 127.0.0.1,5900 tcp from any to 127.0.0.1 dst-port 3389

Обратите внимание, что, похоже, существуют различные синтаксисы, которые ipfwмогут обрабатываться ( 127.0.0.1,3389и, 127.0.0.1 3389похоже, они также будут работать из того, что я могу найти). Я бы связал вас со страницей FreeBSD, но, как новый пользователь, у меня пока недостаточно репов: whistle :.

В качестве альтернативы, поскольку ipfwэто устарело, вы можете попробовать, pfctlкак описано здесь .

Карманы
источник