通过隧道进入计算机来访问互联网

通过隧道进入计算机来访问互联网

我对隧道有基本的了解

远程系统安装了 Web 服务器,并使用 LAN 代理服务器连接到互联网。

我可以使用 putty 隧道进入远程计算机(动态端口转发)。使用 SOCKS 代理,我可以访问安装在远程系统上的服务器,但不能访问互联网。

我如何访问互联网?

答案1

因为您说您可以通过隧道连接到计算机,所以我建议在您使用的计算机上运行代理服务器,然后将远程计算机上的端口映射到本地代理端口。然后在远程计算机上将映射端口上的代理设置为其自身。任何互联网请求都将通过您的代理服务器映射到互联网。

    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

答案2

一个 SSH 隧道只能连接到一个选定的互联网主机。没有办法只创建一个隧道来为多个互联网连接提供服务,就像代理一样。或者我不知道任何现有的技术。

答案3

我想你已经基本搞懂了,因为你提到了使用 SOCKS 代理。使用ssh,你可以在本地机器上设置你自己的本地 SOCKS 代理服务器,通过 ssh 连接建立隧道;例如:

ssh -D 3128[电子邮件保护]

然后,您需要告诉浏览器使用该本地代理服务器连接到互联网。对于 Firefox,这些设置位于首选项>>高级>>网络>>连接。然后您可以设置手动代理配置 >> SOCKS 主机localhost3128

请注意,这是静态的,每次连接/断开连接时都需要更新它。

此外,您说您的远程服务器......

... 使用 LAN 代理服务器连接到互联网。

我认为您通过 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 也被阻止时,我甚至使用该配置文件来代理 SMTP 和 IMAP,这样我就可以通过 Thunderbird 访问我的个人电子邮件,它也支持 PAC 文件设置。

一如往常,YMMV...希望这会有所帮助。

相关内容