Есть ли способ, которым мы можем подключиться к базам данных документов, таких как Visual Fox Pro, используя туннелирование TCP

Мое требование - я должен иметь возможность подключаться к различным базам данных, которых нет в моей сети. Я должен быть в состоянии установить соединение, передав брандмауэр,Nat.We попробовал Ngrok, который является инструментом, который может быть установлен на машине вне моей сети. Используя ngrok, мы можем выставить порт TCP или TCP для общего доступа, передав их брандмауэр и нат правила.

Используя ngrok, я могу установить соединение с сервером sql в какой-либо сторонней сети, создав TCP-туннель на порте SQL Server по умолчанию 1433. Для этого мне нужно установить Ngrok на этом сервере.

Я попытался соединить эти файловые базы данных (например, Visual Fox Pro), используя ngrok, показав TCP 21(протокол FTP), но безуспешно.

Как я могу подключиться к базам данных документов, которые основаны на файлах, используя любой другой инструмент? Я не могу найти способ подключить их, выставив какой-либо порт http или tcp для туннелирования?

3 ответа

Как вы сказали. VFP - это файловая база данных. Однако есть драйвер от Sybase, который называется ADS (Advantage Database Server). Вы можете использовать это для доступа к данным VFP в качестве сервисной базы данных C/S.

Поскольку вы говорите, что ngrok - это утилита на основе Go, вы также можете создавать микросервисы, основанные на REST webAPI ... для выполнения операций CRUD с базой данных VFP. Выполнить что-то подобное с Go гораздо проще, чем с другим языком ИМХО (по крайней мере, это был язык, который мне показался наиболее легким для такого рода задач, не только его сетевые возможности, но и возможности поддержки параллелизма).

Мы не можем подключить файловые базы данных через TCP-туннелирование. Поскольку туннелирование TCP работает с разрешениями портов, а базы данных на основе файлов работают с доступом к пути к файлам.

Нет никакого способа, вы можете обойти "их" правила брандмауэра, если вы этого не сделаете:

  1. Управление сервером, на котором работает брандмауэр;
  2. Нашли ошибку в брандмауэре;

Если вы можете управлять сервером, то вам просто нужно предоставить любой порт, который не запрещен (например, порт 80, если порт занят, попробуйте другой) и передать трафик на порт базы данных (например, 1433). Это не то, что делает ngrok между прочим. Для этого вы можете использовать:

  • netcat / socat, вот так: netcat -L 127.0.0.1:1433 -p 80 -vvv - это означает: прослушивать порт 80, а когда кто-то подключается к порту 80 извне, установить соединение с портом 1433 для прямого трафика там. Смотрите больше: http://www.devkb.org/linux/115-TCP-tunnel-port-forwarding-using-Netcat
  • туннелирование по ssh (если вам нужно шифрование);

Обратите внимание, что традиционно туннелирование используется для обхода "локальных брандмауэров". Так, например, у вас есть корпоративная политика, запрещающая определенные веб-сайты (у меня были компании, которые не разрешали саму SO!), Но у которых есть серверы Linux, которые освобождены от этой политики. В этом сценарии полезно использовать SSH-прокси.

Другие вопросы по тегам