Переадресация портов напрямую на гостевую ОС с VirtualBox - PullRequest
2 голосов
/ 04 октября 2010

В настоящее время я использую Ubuntu 10.04 для разработки некоторых rails. Он устанавливается в качестве гостевой машины с использованием VirtualBox на хосте Windows 7 x64.

В Ubuntu я пытаюсь портировать туннель нескольких портов с удаленного сервера напрямую на гостевую ОС, чтобы избежать необходимости загружать удаленную базу данных.

Допустим, я хочу перенаправить порт 5000 на удаленном сервере на порт 5000 в гостевой ОС.

Я настроил перенаправитель для порта на стороне Windows, используя VBoxManage.exe. Это перенаправляет HostPort 5000 в GuestPort 5000.

Затем в Ubuntu я запускаю ssh -L5000: 127.0.0.1: 5000. Однако всякий раз, когда я пытаюсь получить доступ к «127.0.0.1:5000», я получаю сообщение «канал 7: открытие не удалось: подключение не удалось: подключение отклонено»

Я что-то упустил?

Спасибо за помощь!

Ответы [ 3 ]

0 голосов
/ 04 октября 2010

SSH по умолчанию использует TCP-трафик, верно?

Просто для проверки, NAT в VirtualBox имеет следующие ограничения (согласно Руководству пользователя ):

Естьчетыре ограничения режима NAT, о которых должны знать пользователи:

ограничения протокола ICMP: некоторые часто используемые инструменты отладки сети (например, ping или tracerouting) полагаются на протокол ICMP для отправки / получения сообщений.Хотя поддержка ICMP была улучшена в VirtualBox 2.1 (теперь должен работать ping), некоторые другие инструменты могут работать ненадежно.

Получение широковещательных сообщений UDP ненадежно: гость не получает надежные широковещательные сообщения, посколькучтобы сэкономить ресурсы, он только прослушивает определенное время после того, как гость отправил данные UDP на определенный порт.Как следствие, разрешение имен NetBios, основанное на широковещании, не всегда работает (но WINS всегда работает).В качестве обходного пути можно использовать числовой IP-адрес нужного сервера в нотации \ server \ share.

Протоколы, такие как GRE, не поддерживаются: протоколы, отличные от TCP и UDP, не поддерживаются.Это означает, что некоторые продукты VPN (например, PPTP от Microsoft) не могут быть использованы.Существуют другие продукты VPN, которые используют просто TCP и UDP.

Переадресация портов хоста ниже 1024 невозможна: на хостах на основе Unix (например, Linux, Solaris, Mac OS X) невозможно привязать к портам ниже1024 из приложений, которые не запускаются пользователем root.В результате, если вы попытаетесь настроить такую ​​переадресацию портов, ВМ откажется запускаться.

0 голосов
/ 10 декабря 2013

Попробуйте ssh -L5000:0.0.0.0:5000 вместо ssh -L5000:127.0.0.1:5000

Существует нечто, называемое " loopback ", которое запутано с 127.0.0.1, что вызовет у вас горе при попытке получить доступ к портамс другой машины.Т.е. ваш хост-компьютер.

0 голосов
/ 04 октября 2010

ошибка подключения: соединение отклонено

Это означает, что вы не можете подключиться к 5000 на удаленном конце.

Если вы используете это соединение только изнутри вашего гостя через туннель SSH, вам не нужно перенаправление из VBoxManager, так как это откроет операционную систему, так что внешние компьютеры могут подключаться непосредственно к вашему гостю, это не будет помогите вашему гостю подключиться к внешней стороне.

Вы уверены, что сервер, к которому вы подключаетесь (SSH), является тем же сервером, на котором работает ваша база данных? И работает ли база данных на этом сервере?

Когда вы подключились (SSH) к серверу, вы можете попытаться указать, какие порты прослушивают соединения, или вы можете попытаться подключиться к базе данных с помощью telnet. Чтобы вывести список слушателей, вы можете запустить «netstat -lnt» (-l показывает прослушивание, -n - это цифра (показать IP и номер порта), а -t - это tcp). У вас должна быть строка типа «tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN», если у вас есть служба, прослушивающая TCP на порту 5000. Чтобы попытаться подключиться, вы можете просто выполнить «telnet 127.0.0.1 5000», если вы не можете подключиться через telnet с сервера, то база данных не прослушивает / не разрешает ваше соединение, или сервер работает на другом порту или сервере.

...