让我们从一个图表开始:

我们可以看到一个“典型”的 IPv4 公司网络:
所有计算机都有一个 proxy.pac 文件,用于指示使用哪个代理或是否直接连接。计算机只能访问本地 DNS(例如,没有 google.com 的名称解析。)
顺便说一句......公司内部不尊重RFC1918,使用公共地址!(历史原因)。明确地使用互联网代理使得没有问题成为可能。
如果我们迁移到 IPv6 会怎样?
IPv6 中的 Internet 访问很容易。实际上,只需连接 Internet IPv4 和 IPv6 中的代理即可。内部网络无事可做:

为什么不直接使用完整的 IPv6 网络?因为总是有不兼容 IPv6 的旧服务器..
这可能是最简单的解决方案。但这是最好的吗?
我认为过渡到 IPv6 是一个不用理会这个代理协议的机会!
哦是的!
在这个新架构中,我们有:
Explicit Internet Proxy 变成了 Transparent Internet ProxyLocal DNS成为本地域的Normal Recursive DNS+authorativeExplicit Company Proxy …我在我们的网络上安装了一个新路由器,以帮助管理我们的专用网络连接并更好地控制到外部的路由。我决定通过删除对我们路由器上第二个专用网络的引用来简化这个问题(但请注意这个问题是有原因的,所以答案是不要让旧路由器作为默认网关)。
我的路由器上的 iptables 中有以下路由:
# Allow established connections, and those !not! coming from the public interface
# eth0 = public interface
# eth1 = private interface #1 (129.2.2.0/25)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW ! -i eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow outgoing connections from the private interface
iptables -A FORWARD -i eth1 -o eth0 -j …Run Code Online (Sandbox Code Playgroud) 我正在使用MikroTik路由器型号RB750,我需要为我的一些客户端使用HTTPS 代理方法。代理服务器 (VPS) 在另一个国家/地区,我有 IP 地址和端口号以及用于连接的用户名和密码,在代理服务器中我有一个CCPROXY程序。我在路由器中有一个 VPN,但我需要以相同的方式设置 HTTPS 代理,以便为某些客户端启用它并为某些客户端禁用它。
谁能告诉我在Winbox软件中怎么做?
我正在针对远程 https Web 服务开发应用程序。在开发时,我需要将来自本地开发服务器(在 ubuntu 上运行 nginx)的请求代理到远程 https Web 服务器。这是相关的 nginx 配置:
server {
server_name project.dev;
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_pass https://remote.server.com;
proxy_set_header Host remote.server.com;
proxy_redirect off;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是远程 HTTPS 服务器只能接受通过 SSLv3 的连接,从以下openssl调用可以看出。
不工作:
$ openssl s_client -connect remote.server.com:443
CONNECTED(00000003)
139849073899168:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 226 bytes
---
New, (NONE), …Run Code Online (Sandbox Code Playgroud) 我真的刚刚开始使用 lighttpd,我不确定如何准确配置它。
我想获取流量并重定向到另一台服务器说“ http://localhost/url_a/ ”并将请求和响应重定向到“ http://other_server:8080/ ”
另一个例子是“ http://localhost/url_b/ ”转到“ http://other_server:8081/url_b/ ”
我到底应该研究什么来完成这个?
谢谢。
由于OpenSSH的5.4有一个叫natcat模式的新功能,它允许你绑定STDIN和STDOUT本地SSH客户端通过远程SSH服务器访问的TCP端口。只需调用即可启用此模式ssh -W [HOST]:[PORT]
从理论上讲,这应该非常适合用于ProxyCommand每主机 SSH 配置中的设置,以前经常与nc(netcat) 命令一起使用。ProxyCommand允许您将机器配置为本地机器和目标 SSH 服务器之间的代理,例如,如果目标 SSH 服务器隐藏在防火墙后面。
现在的问题是,它没有工作,而是在我面前抛出一条神秘的错误消息:
Bad packet length 1397966893.
Disconnecting: Packet corrupt
Run Code Online (Sandbox Code Playgroud)
这是我的摘录~/.ssh/config:
Host *
Protocol 2
ControlMaster auto
ControlPath ~/.ssh/cm_socket/%r@%h:%p
ControlPersist 4h
Host proxy-host proxy-host.my-domain.tld
HostName proxy-host.my-domain.tld
ForwardAgent yes
Host target-server target-server.my-domain.tld
HostName target-server.my-domain.tld
ProxyCommand ssh -W %h:%p proxy-host
ForwardAgent yes
Run Code Online (Sandbox Code Playgroud)
正如您在此处看到的,我正在使用 ControlMaster 功能,因此我不必为每台主机打开一个以上的 SSH 连接。
我测试的客户端机器是 Ubuntu 11.10 (x86_64),代理主机和目标服务器都是 Debian Wheezy Beta 3 (x86_64) 机器。
当我调用ssh target-server …
我们有一个 SSH 隧道 ( ssh -ND 127.0.0.1:8080 user@example.com),如果将浏览器指向127.0.0.1:8080为 socks5 代理,它可以正常工作,但其他流量仍然没有通过这个隧道。
我如何才能让所有流量都通过 SSH 隧道?
我需要什么工具和设置?
我使用的系统是 Debian 和 MacOS,如果解决方案或多或少适用于两个平台,那么更好。
我在静态内容上添加了X-Accel-Expires标头以及Last-Modified标头。我想知道缓存这些元素而不缓存任何其他内容的正确设置是什么。
这是我目前所拥有的,但它不缓存任何内容:
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
client_max_body_size 2000m;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
ssl_certificate /etc/nginx/chain.pem;
ssl_certificate_key /etc/nginx/key.key;
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=cache:30m max_size=1G;
proxy_temp_path /var/lib/nginx/proxy 1 2;
proxy_cache_use_stale error timeout invalid_header http_502;
server {
listen 80;
server_name domain;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 700;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Run Code Online (Sandbox Code Playgroud) 我有 2 个 web Debian 服务器,一个接受来自端口 80 的请求的前端和一个通过前端代理的后端。
我想要做的是将许多不同的 URL 发送到带有虚拟主机的后端服务器。
这是前端 Apache 设置
<VirtualHost *:80>
ServerName dev.example.com
ProxyPass / http://192.168.144.100:80/
ProxyPassReverse / http://192.168.144.100:80/
</VirtualHost>
<VirtualHost *:80>
ServerName sandbox.example.com
ProxyPass / http://192.168.144.100:80/
ProxyPassReverse / http://192.168.144.100:80/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这是后端 Apache 设置
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName dev.example.com
DocumentRoot /var/www/example.com/dev/
<Directory />
Options FollowSymLinks
AllowOverride …Run Code Online (Sandbox Code Playgroud) 我在大学时使用 ProxyChains 连接到我的代理。它工作得很好,除了它甚至将本地端口的数据包重定向到代理服务器:
|S链|-<>-172.22.2.211:3128-<><>-4.2.2.2:53-<><>-OK
|S-链|-<>-172.22.2.211:3128-<><>-127.0.0.1:57343-<--拒绝
有什么办法可以在 ProxyChains 中为 127.0.0.1 添加异常