haproxy和polipo的代理中繼用法


背景:

現有:
一台baidu/ali/tecent雲服務器A(地址為a.a.a.a);
一台VPS B(地址為b.b.b.b), B中搭建有ss,監聽端口為8000.

需求:

一:使用A做跳板機訪問B中搭建的ss。且使用A的12344端口。(即把A的12344轉發到B的8000)
二:使用A做跳板機訪問國內網站。且使用A的12345端口。

其他要求:使用haproxy實現。

解決方案:

  • 對需求一,只需要安裝haproxy,對需求二,額外安裝polipo(或其他http代理服務器)完成。
  • 配置/etc/haproxy/haproxy.cfg如下:
global
	user haproxy
	group haproxy
	daemon

defaults
    log global
    mode tcp
    option dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000

#需求一:
frontend ss-in
    bind *:12344
    default_backend ss-out

backend ss-out
    server server1 a.a.a.a:17001 maxconn 20480


# 需求二:
frontend sunflower-in
    bind *:12345
    default_backend sunflower-out
backend sunflower-out
    server server1 127.0.0.1:8123 maxconn 20480
  • 配置/etc/polipo/config如下:
logSyslog = true
logFile = /dev/null

allowedPorts = 1-65535
tunnelAllowedPorts = 1-65535

proxyAddress = 0.0.0.0
proxyPort = 8123
  • 啟動polipo和haproxy
sudo systemctl enable --now polipo
sudo systemctl enable --now haproxy
  • 檢查效果:
    一:配置本地ss的server為a.a.a.a,port為12344,其他項保持為原來使用服務器B時的配置:

    二:配置瀏覽器代理為http://a.a.a.a:12345,可成功訪問國內網站:

不足:
haproxy無法進行udp代理。需同時轉發tcp和udp可考慮使用brook。

令:

其實這兩個需求只用polipo即可實現。polipo可以把socks代理轉為http代理,也可直接轉發http請求(ipv4和ipv6也可互轉),對於需求2,直接訪問如上配置好的polipo的8123端口即可。對於需求1,可以給ss設置一個前置代理(win客戶端有“正向代理設置"),同樣訪問8123即可。
使用polipo做http代理最好設置驗證,否則被掃到端口很容易被盜用。設置驗證在配置文件中添加:authCredentials=username:yourpwd(用戶名密碼無引號)。
需求1中的haproxy則是直接轉發tcp請求,需指定出入端口,如出入端口不變,可寫為ip段的格式,但開放大量端口的形式通常不是我們想要的。

使用Haproxy進行端口轉發使用Haproxy進行端口轉發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM