V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wdd2007
V2EX  ›  问与答

求助,能否在路由器上设置一个 HTTP 代理,让所有连接这个路由器的设备都能自动通过代理访问,而不用每台设备再设置代理 IP 和代理端口号?

  •  
  •   wdd2007 · 2017-09-05 15:33:01 +08:00 · 15370 次点击
    这是一个创建于 1552 天前的主题,其中的信息可能已经有所发展或是发生改变。
    RT

    OpenWrt 或者什么可以实现呢?
    13 条回复    2021-09-27 16:12:52 +08:00
    hicdn
        1
    hicdn  
       2017-09-05 15:35:21 +08:00
    google 关键词 openwrt shadowsocks chinadns
    wdd2007
        2
    wdd2007  
    OP
       2017-09-05 15:38:37 +08:00
    @hicdn 需要用 http 代理,不用 ss。可以实现么?
    tony1016
        3
    tony1016  
       2017-09-05 15:54:05 +08:00   ❤️ 1
    socks5 可以,http 不行。全局就需要从 TCP 层进行包装,而 HTTP 代理是无法做到的,socks5 可以用 redsocks
    jasontse
        4
    jasontse  
       2017-09-05 15:57:21 +08:00 via Android   ❤️ 1
    @tony1016 麻烦看一下 redsocks 的配置文件
    zjqzxc
        5
    zjqzxc  
       2017-09-05 15:57:54 +08:00
    关键词:透明代理
    anheiyouxia
        6
    anheiyouxia  
       2017-09-05 16:05:38 +08:00 via Android
    iptables
    netfee
        7
    netfee  
       2017-09-05 16:34:18 +08:00 via Android
    transparent proxy
    wdd2007
        8
    wdd2007  
    OP
       2017-09-05 16:41:19 +08:00
    @tony1016
    @jasontse

    谢谢,正在尝试 redsocks
    whwq2012
        9
    whwq2012  
       2017-09-05 16:42:22 +08:00 via Android
    这功能不是老毛子固件自带吗
    Osk
        10
    Osk  
       2017-09-05 17:20:58 +08:00   ❤️ 1
    可以的,我就是这样用的,redsocks + firewall 规则,能应付大部分的上网和客户端软件的上网需求,部分客户端不能正常使用,不知道是软件需要 socks 代理还是因为代理服务器限制太多导致的。

    redsocks 配置文件:
    ```text
    # /etc/redsocks.conf
    base {
    log_debug = off;
    log_info = off;
    daemon = on;
    redirector= iptables;
    }

    redsocks {
    local_ip = 192.168.1.1; # 最好绑定路由器的 LAN 网段的 IP 地址
    local_port = 1080;
    ip = $HTTP_PROXY_IP; # 支持 http-connet 代理服务器的 ip 地址
    port = $HTTP_PROXY_PORT; # 代理服务器端口
    type = http-connect;
    }
    ```
    将以下 firewall 规则添加到 openwrt 防火墙的用户规则中:
    ```shell
    #!/bin/sh
    #append to /etc/firewall.user

    redsocks_port=1080

    # start iptables
    iptables -t nat -N PROXYCHAIN

    # 不重定向保留 IP 地址
    # Do not redirect traffic to the followign address ranges
    iptables -t nat -A PROXYCHAIN -d 127.0.0.0/8 -j RETURN
    iptables -t nat -A PROXYCHAIN -d 192.168.0.0/16 -j RETURN
    iptables -t nat -A PROXYCHAIN -d 10.0.0.0/8 -j RETURN
    iptables -t nat -A PROXYCHAIN -d 224.0.0.0/4 -j RETURN
    iptables -t nat -A PROXYCHAIN -d 240.0.0.0/4 -j RETURN
    iptables -t nat -A PROXYCHAIN -d 0.0.0.0/8 -j RETURN
    iptables -t nat -A PROXYCHAIN -d 169.254.0.0/16 -j RETURN
    iptables -t nat -A PROXYCHAIN -d 172.16.0.0/12 -j RETURN

    #SSL connection needs redsocks
    iptables -t nat -A PROXYCHAIN -p tcp --dport 443 -j REDIRECT --to-ports $redsocks_port

    #redirect all kinds of traffic
    iptables -t nat -A PROXYCHAIN -p tcp -j REDIRECT --to-ports $redsocks_port

    #
    iptables -t nat -A PROXYCHAIN -p udp -j RETURN
    iptables -t nat -A PREROUTING -i br-lan -p tcp -j PROXYCHAIN
    #iptables -t nat -A PREROUTING -i br-lan -p udp -j PROXYCHAIN

    ```
    最好将中文的注释移除。


    redsocks 偶尔会挂掉,所以配合这个脚本完成自动检测和启动
    ```shell
    #!/bin/sh

    #because openwrt does not have 'nohup' command by default,
    #so we should ignore SIGHUP
    trap " " SIGHUP

    while sleep 5
    do

    pidof redsocks &>/dev/null || {
    logger "redsocks are not running"
    /etc/init.d/redsocks restart
    }

    done
    ```
    开机自启:
    ```shell
    # Put your custom commands here that should be executed once
    # the system init finished. By default this file does nothing.

    #/etc/rc.local

    ulimit -n 8192
    chmod +x /etc/check_redsocks_daemon.sh
    /etc/check_redsocks_daemon.sh &> /dev/null &

    exit 0
    ```
    acess
        11
    acess  
       2017-09-05 17:21:09 +08:00
    WPAD,不过没见几个人用……而且应用程序未必会遵守系统的代理设置。
    还是用这个把:redsocks+ss-server+ss-tunnel(用来处理 DNS)
    nadoo
        12
    nadoo  
       2017-09-06 00:00:04 +08:00 via iPhone
    https://github.com/nadoo/glider

    看看下方的 transparent proxy 配置样例,forward 设置为 http 代理
    larryzhu
        13
    larryzhu  
       69 天前
    这个功能挺实用的,我也有这个需求,用来过滤广告
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3249 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:09 · PVG 13:09 · LAX 21:09 · JFK 00:09
    ♥ Do have faith in what you're doing.