У меня есть базовое понимание туннелирования

Удаленная система имеет установленный веб-сервер и подключается к Интернету через прокси-сервер локальной сети.

Я могу туннелировать в удаленный компьютер (динамическая переадресация портов), используя шпаклевку. Используя прокси SOCKS, я получаю доступ к серверу, установленному в удаленной системе, но не к Интернету.

Как мне получить доступ к интернету ??

3 ответа3

0

Один SSH-туннель может подключаться только к одному выбранному интернет-хосту. Невозможно создать только один туннель для обслуживания нескольких интернет-соединений, например прокси. Или я не знал ни одной существующей технологии этого.

0

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

    internet --- your machine with proxy on port 8080 --- ssh tunnel mapping 8080(local) to 8080(remote) ---- remote machine (http://localhost:8080 as proxy)

    SSH -L 8080:1.2.3.4:8080

ваш ip как видно на удалённой машине = 1.2.3.4

0

Я думаю, что вы проходите большую часть пути, поскольку вы упомянули использование прокси-сервера SOCKS. С помощью ssh вы можете настроить собственный локальный прокси-сервер SOCKS на локальном компьютере, туннелированный через соединение ssh; например:

ssh -D 3128 user@remote.host.com

Затем вы должны указать браузеру использовать этот локальный прокси-сервер для подключения к Интернету. Для Firefox эти настройки находятся в Предпочтения >> Дополнительно >> Сеть >> Соединение. Затем вы можете установить Ручную настройку прокси-сервера >> SOCKS Host на localhost и 3128 .

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

Кроме того, вы сказали, что ваш удаленный сервер ....

... подключается к Интернету через прокси-сервер локальной сети.

Я полагаю, что сеть, к которой вы подключаетесь через SSH, имеет собственный прокси-сервер для сетевых подключений, и в этом случае вам может понадобиться запутаться с настройками; трудно быть точным без дополнительной информации.

В качестве альтернативы, в зависимости от вашей ОС, вы можете использовать системные настройки прокси-сервера или, если вы действительно любите приключения, вы можете установить «URL-адрес автоматической настройки прокси-сервера: в файл». Раньше я делал это, когда работал в компании с драконовским «чистым няней» на моем пути. Например, вот конфигурационный файл, который я использовал - много примеров, но вам нужно будет найти правильные настройки для вас.

// Personal/Portable Proxy Auto Config -- in -*- conf -*- mode
//
// Point your web-browser or good mail client (e.g. Thunderbird)
// at this automatic configuration script.
//
// Reasonable references for PAC stuff:
// - http://en.wikipedia.org/wiki/Proxy_auto-config
// - http://findproxyforurl.com/example-pac-file/
//
// This is not for the weak of heart.  If you want something
// user friendly and still configurable, try:
// - https://addons.mozilla.org/en-us/firefox/addon/foxyproxy-standard
////

// normal, non-firewalled, non-proxied...
var PROXY = "DIRECT";
var SOCKS = "DIRECT";
var DOMAIN = ".nomatch"; 
var IPCACHE = "bogus";

var LOCALPROXY = "PROXY localhost:3128";

function MyPACSetup() {
  alert("MY IP = " + myIpAddress());

  PROXY = "PROXY proxy.corporation.com:8080;" +
    "DIRECT";
  SOCKS = "DIRECT";
  DOMAIN = ".nomatch"; 
  IPCACHE = myIpAddress();
  NETMASK = "255.255.0.0";

  // Proxy web locally when inside 10.x.x.x nonrouteable
  //if (isInNet(myIpAddress(), "192.168.158.0", "255.255.255.0")) {
  //if (isInNet(myIpAddress(), "192.168.1.0", "255.255.255.0")) {
  //if (isInNet(myIpAddress(), "128.99.3.0", "255.255.255.0")) {
  if (isInNet (myIpAddress(), "164.145.43.0", NETMASK)) {
    DOMAIN = ".nomatch";
    SOCKS = "SOCKS localhost:1080";
    PROXY = "SOCKS localhost:1080;" +
      "DIRECT";
  }

  // Proxies when inside 
//  if (isInNet(myIpAddress(), "129.235.0.0", "255.255.0.0")
//      || isInNet(myIpAddress(), "199.62.0.0", "255.255.0.0")) {
//    DOMAIN = ".corporation.com";
//    NETMASK = "255.255.0.0";
//    PROXY = 
//      //"PROXY lug.corporation.com:3128;" +
//      //"PROXY mspcf01.corporation.com:8080;" +
//      //"PROXY tmpproxy.corporation.com:8080;" +
//      "DIRECT";
//    SOCKS = 
//      //"SOCKS localhost:1080";
//      "SOCKS lug.htc.corporation.com:1080";
//  }

  // Dwight's world
//  if (isInNet(myIpAddress(), "192.168.17.0", "255.255.255.0")) {
//    PROXY = "128.99.0.23:500"; // + ";DIRECT";
//    SOCKS = "128.99.0.23:500";
//  }

  alert("PROXY = " + PROXY);
  alert("SOCKS = " + SOCKS);
  alert("DOMAIN = " + DOMAIN);
}

function FindProxyForURL(url, host) {
  // Re-configure proxies when IP changes
  // Handles portables moving around different networks
  if (myIpAddress() != IPCACHE) { MyPACSetup(); }

  //alert("URL: " + url);

  // Testing localhost proxy for wfuzz or other hacking
  if ( host == "localhost" ) {
    alert("localhost: " + host + " -- returning PROXY");
    return LOCALPROXY;
  }


  // local and loopback hosts are always direct
  // should non-routable be here too?
  if ( isPlainHostName(host)
       || dnsDomainIs(host, DOMAIN)
       //|| host == "localhost"
       || isInNet(host, "127.0.0.0", "255.255.255.0")
       || isInNet(host, IPCACHE, NETMASK)
       ) {
    //alert("Plain/local host: " + host + " -- returning DIRECT");
    return "DIRECT";
  }

  // Mostly for Thurderbird
  // IF host is local or in DOMAIN, above check will succeed
  if (url.substring(0, 5) == "imap:"
      || url.substring(0, 7) == "mailto:"
      || url.substring(0, 5) == "nntp:") {
    //alert("Mail/News protocols - returning SOCKS");
    return SOCKS;
  }

  // Tunnel blocked sites through our SOCKS server
  if ( shExpMatch(host, "*poker*")
       || shExpMatch(host, "*.emusic.com")
       || shExpMatch(host, "www.myspace.com")
       || shExpMatch(host, "*beer*")
       || shExpMatch(host, "*youtube.com")
       || shExpMatch(host, "*.somethingawful.com")
       || shExpMatch(host, "www.rst38.org.uk")
       || shExpMatch(host, "*videodownloader.net")
       || shExpMatch(host, "*javimoya.com")
       || shExpMatch(host, "gnupg.org")
       || shExpMatch(host, "*.asobrain.com")
       || shExpMatch(host, "*climateprediction.net")
       || shExpMatch(host, "*rsscache.com")
       //|| shExpMatch(host, "*winamp.com*")
       // || dnsDomainIs(host, ".windowsupdate.com")
       // || dnsDomainIs(host, "windowsupdate.microsoft.com")
       // || dnsDomainIs(host, ".windowsupdate.microsoft.com")
       ) {
    alert("Corporation Blocked -- returning SOCKS");
    return SOCKS;
  }

//  if (url.substring(0, 5) != "http:") {
//    //alert("NON HTTP -- returning SOCKS");
//    return SOCKS;
//  }
//  if (url.substring(0, 5) == "https:") {
//    //alert("HTTPS -- returning DIRECT + PROXY");
//    return "DIRECT;" + PROXY;
//  }

  // Otherwise use normal proxy
  //alert("Default PROXY");
  return PROXY;
}

// eof

Обратите внимание, что я даже использовал этот конфигурационный файл для прокси SMTP и IMAP, когда они также были заблокированы, поэтому я мог получить доступ к своей личной электронной почте через Thunderbird, которая также поддерживает настройки файла PAC.

Как всегда, YMMV ... Надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .