V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Jamy
V2EX  ›  Linux

openvpn 服务端如何设置代理

  •  
  •   Jamy · 231 天前 · 1769 次点击
    这是一个创建于 231 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在有一台国内的手机通过 open vpn 连接到了国外的 openvpn@server 现在想在 openvpn@server 的服务器上对所有的来自 openvpn 的流量启用透明代理, 使得手机检测 ip 的时候是代理服务器的 ip 。 请给位大佬给点意见。

    第 1 条附言  ·  230 天前

    感谢各位大佬的回复。 开启调试日志后

    #开启iptables调试内核模块
     $ modprobe nf_log_ipv4
     $ sysctl net.netfilter.nf_log.2
     net.netfilter.nf_log.2 = nf_log_ipv4
    #添加iptables规则
     $ iptables -t raw -A PREROUTING -p icmp -j TRACE
     $ iptables -t raw -A OUTPUT -p icmp -j TRACE
    

    不断查看日志,发现这条命令,

    iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to 127.0.0.1:31338
    

    会把目标地址改为服务器的vpn虚拟网卡地址 10.8.0.1

    而iptables 中并没有允许这个地址。 所以只要再加上

    iptables -I INPUT -s 10.8.0.0/24 -j ACCEPT
    

    终于跑通了。。。 不容易啊,搞了我好几天。

    13 条回复    2023-09-12 10:13:00 +08:00
    cdlnls
        1
    cdlnls  
       231 天前
    我的理解是,给客户端设置默认路由就可以了吧,然后服务端开 ip_forward 和配置 nat 。
    thsun
        2
    thsun  
       231 天前 via iPhone
    直接設轉發內網 ip 和 nat 那樣咯,如樓上所說
    Jamy
        3
    Jamy  
    OP
       231 天前
    @cdlnls
    我也是那么想的,于是本机搭建了一个 redsocks 服务器,开了端口 31338 ,redsocks 会把数据发往配置的代理服务器,
    然后执行
    iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to 127.0.0.1:31338
    然后用 curl 测试下,本机的请求可以走代理,但是 vpn 上来的不行。
    对于 iptables 理解仅限于常规的使用,实在搞不懂啊。求大佬指点迷津
    Jamy
        4
    Jamy  
    OP
       231 天前
    @Jamy
    也测试这个命令
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 31338
    vpn 上来的还是无效。
    ltkun
        5
    ltkun  
       231 天前 via Android
    国内连国外 openvpn 这种通用协议过不了 gfw 吧 得换其他
    defunct9
        6
    defunct9  
       231 天前 via iPhone
    开 ssh ,让我上去配
    a33291
        7
    a33291  
       231 天前
    感觉 softether 的 nat 更方便
    flyqie
        8
    flyqie  
       231 天前
    @defunct9 #6

    不用先看看再配? doge
    Jamy
        9
    Jamy  
    OP
       231 天前
    @ltkun 这一层已经通过 openvpn 客户端里设置代理连接到服务器了。
    busier
        10
    busier  
       231 天前
    你都已经搞定 openvpn 连接了,可以说完成 90%了。剩下就是 sysctl 开个 ip_forward 和 iptables 的 nat 表的 POSTROUTING 链设个 MASQUERADE 就搞定的事情......
    Jamy
        11
    Jamy  
    OP
       230 天前
    @busier 就是这个 nat 搞不定啊,太难了
    n1cogrv
        12
    n1cogrv  
       230 天前
    push "redirect-gateway local def1"
    push "dhcp-option DNS 8.8.8.8"

    https://openvpn.net/community-resources/how-to/#pushing-dhcp-options-to-clients:~:text=cause%20all%20IP%20network%20traffic%20originating%20on%20client%20machines%20to%20pass%20through%20the%20OpenVPN%20server

    @Jamy #11

    试试用 v2raya 对 server 进行透明代理,再保证 client 的所有网络流量都经过 server ,这时就可以确保 client -> server -> server_tproxy
    defunct9
        13
    defunct9  
       229 天前
    @flyqie openvpn 实在是太熟了,简直是被迫成为专家了。上去就配
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5712 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 06:30 · PVG 14:30 · LAX 23:30 · JFK 02:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.