我对隧道有基本的了解
远程系统安装了 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 主机至localhost
和3128
。
请注意,这是静态的,每次连接/断开连接时都需要更新它。
此外,您说您的远程服务器......
... 使用 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...希望这会有所帮助。