我有以下问题。
在我的公司,我们有一个代理,我无法访问开发所需的一些资源,所以他们为我提供了一个外部 4g 路由器。我是否可以桥接连接,这样当我无法通过以太网访问资源时,就可以尝试使用 4g,而不必每次都切换连接?
我有:
两个连接位于不同的 IP 范围内。
- 通过公司代理和防火墙的 LAN 以太网。
- 当我必须直接访问或从外部 IP 访问资源时,使用 WLAN 4g 连接。
我想:
我请求一个资源(URL)->首先通过 LAN 检查,如果我无法使用 LAN 访问它,则使用 WLAN。
示例(过于简单):
- 公司内页 -> LAN说YES
- 代理不允许的外部资源 -> LAN 说否 -> 4g 说是
PD:我们的 IT 部门说这是一个代理问题,但我怀疑它不允许端口输出或类似的东西......
谢谢你的帮助!我不是英语母语者,所以如果你需要一些说明,请将其注释掉。
答案1
你应该设置一个代理服务器。
什么是 proxy.pac
这是一个小型 Javascript 文件,您可以将其托管在您的计算机上。您可以使用此文件为您的 Web 浏览器提供网络配置,然后系统FindProxyForURL(url,host)
将调用其方法来路由您的浏览器需要访问的每个 URL。
此 Javascript 方法可以使用一组有用的预定义测试函数并且应该返回:
"DIRECT"
绕过代理并尝试直接连接此 URL 的互联网"PROXY ip:port"
路由到指定的代理(IP/端口)- 或用 分隔的几个选项
"; "
来描述具有故障转移功能的链
这样的设置可以很容易地根据您所连接的 URL,甚至根据您的计算机 IP 地址(家庭/公司网络)和工作日(工作日/周末)描述全面的路由规则。
示例文件
这是一个有趣的例子让你明白:
function FindProxyForURL(url, host) {
// If the hostname matches, send direct.
if (dnsDomainIs(host, "intranet.domain.com") ||
shExpMatch(host, "(*.abcdomain.com|abcdomain.com)"))
return "DIRECT";
// If the protocol or URL matches, send direct.
if (url.substring(0, 4)=="ftp:" ||
shExpMatch(url, "http://abcdomain.com/folder/*"))
return "DIRECT";
// If the requested website is hosted within the internal network, send direct.
if (isPlainHostName(host) ||
shExpMatch(host, "*.local") ||
isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") ||
isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
return "DIRECT";
// If the IP address of the local machine is within a defined
// subnet, send to a specific proxy.
if (isInNet(myIpAddress(), "10.10.5.0", "255.255.255.0"))
return "PROXY 1.2.3.4:8080";
// DEFAULT RULE: All other traffic, use below proxies, in fail-over order.
return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";
}
因为这是 Javascript,您当然可以创建和使用私有辅助函数和变量。
进一步阅读
您将在互联网上找到大量文档。其中包括:
最后提示
我鼓励您仅从FindProxyForURL
主机参数或 URL 协议中选择结果。特别是,通过不同的外部 IP 路由单个网站的多个 URL 并不总是受支持的,因为某些网站希望用户在整个导航过程中拥有稳定的 IP 地址。
许多负载平衡示例都有这个缺点。