V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ssrr
V2EX  ›  SSH

dnsmasq+ipset+iptable 配置本地指定流量重定向到本地**-redir 不成功

  •  
  •   ssrr · 2017-10-22 09:44:41 +08:00 · 3868 次点击
    这是一个创建于 2591 天前的主题,其中的信息可能已经有所发展或是发生改变。
    root@raspbx:~# iptables-save
    # Generated by iptables-save v1.6.0 on Sun Oct 22 09:29:07 2017
    *nat
    :PREROUTING ACCEPT [0:0]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [30:5556]
    :POSTROUTING ACCEPT [26166:1573716]
    -A PREROUTING -p tcp -m set --match-set socks dst -j REDIRECT --to-ports 1081
    -A OUTPUT -p tcp -m set --match-set socks dst -j REDIRECT --to-ports 1081
    -A OUTPUT -d myserverip/32 -j RETURN
    COMMIT
    # Completed on Sun Oct 22 09:29:07 2017


    root@raspbx:~# ipset list socks
    Name: socks
    Type: hash:net
    Revision: 6
    Header: family inet hashsize 1024 maxelem 65536
    Size in memory: 452
    References: 2
    Members:
    172.217.24.197


    我要做的是把打了 ipset 标记的这条 ip172.217.24.197 重定向到我的**-redir 上

    172.217.24.197 是 gmail.com 的 ip,ping 的 ip 也对,**-redir 别的应用来使用也工作正常,但是 curl https://gmail.com 还是请求超时,同时**-redir 弹出大量相同报错 ERROR: accept: Too many open files 感觉是 陷入死循环了 可是-A OUTPUT -d myserverip/32 -j RETURN 这条不是已经将**-redir 的服务器排除在外了 是不是还有什么没做呢

    网上找了很久基本都是拿 dnsmasq+ipset+iptable 这一套做网关不是像我这样本地 linux 代理的
    7 条回复    2017-10-22 13:52:52 +08:00
    ssrr
        1
    ssrr  
    OP
       2017-10-22 10:03:10 +08:00
    linux 是树莓派 3B OS:raspbian
    ssrr
        2
    ssrr  
    OP
       2017-10-22 10:10:21 +08:00
    现在 iptables 改成 单单一条规则了 iptables -t nat -A OUTPUT -p tcp -m set --match-set socks dst -j REDIRECT --to-port 1081
    **-redir 不弹报错了 但是 curl 还是连接超时
    ssrr
        3
    ssrr  
    OP
       2017-10-22 10:37:06 +08:00
    找到这条帖子 跟我一样 https://www.v2ex.com/t/130665 直接单独一条
    iptables -t nat -A OUTPUT -p tcp – dport 80 -j REDIRECT – to-ports 1081 是没问题的
    但是用 ipset 就不行
    ssrr
        4
    ssrr  
    OP
       2017-10-22 10:42:03 +08:00
    @ssrr 帖子里说是写错了 也不知道是不是在说-A 参数写错了 我一直是用的 OUTPUT 还是不行
    ssrr
        5
    ssrr  
    OP
       2017-10-22 11:36:32 +08:00
    重启解决了 很尴尬。。现在主动添加 ipset add socks 172.217.24.197 工作正常
    然后又发现 dnsmasq 无法添加 ipset 的问题
    找到这个贴 https://www.v2ex.com/t/164529 重编译 dnsmasq 解决了
    ssrr
        6
    ssrr  
    OP
       2017-10-22 13:19:45 +08:00
    @ssrr
    经过反复尝试 发现无法添加 ipset 并不是 dnsmasq 的问题 其实在我编译 dnsmasq 前自带版本也不低 2.76 目前最新就 2.78
    是因为 dnsmasq.conf 配置文件的
    address=/example.com/X.X.X.X 和 ipset 规则不能共存
    解析只能通过远程转发 或者 dnsmasq 自己转发到上游 dns 来实现 例如
    server=/example.com/X.X.X.X#53
    才能使 ipset 生效
    直接用 address 指定 ip 就无法使 ipset 生效
    而且直接用 /etc/hosts 也无法使 ipset 生效 折腾了两天 终于。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6058 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 02:34 · PVG 10:34 · LAX 18:34 · JFK 21:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.