forum.gl-inet.cn

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
    查看: 4171|回复: 10

    [经验分享] 请教国内外IP分流 iptables ipset

    [复制链接]

    1

    主题

    11

    帖子

    67

    积分

    注册会员

    Rank: 2

    积分
    67
    发表于 2023-5-30 16:11:32 | 显示全部楼层 |阅读模式
    我路由上建了一个OpenConnect接口,现在我想国内的IP走pppoe-wan口,国外的IP走OpenConnect的接口。
    ipset我添加了国内的IP,iptables那边应该怎么添加规则?

    谢谢大佬不吝赐教。
    回复

    使用道具 举报

    1

    主题

    11

    帖子

    67

    积分

    注册会员

    Rank: 2

    积分
    67
     楼主| 发表于 2023-5-30 19:39:17 | 显示全部楼层
    jkle 发表于 2023-5-30 18:48
    可以的話在配置文件添加路由規則,感覺這個最簡單

    直接添加路由规则太多了,路由器直接断网了
    回复

    使用道具 举报

    76

    主题

    2144

    帖子

    9889

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    9889

    官方人员

    发表于 2023-5-30 20:33:49 | 显示全部楼层
    山语 发表于 2023-5-30 19:39
    直接添加路由规则太多了,路由器直接断网了

    我这里有一个例子,希望对你有所帮助吧
    https://royal-garment-e79.notion ... d119a01496bd738203d
    回复

    使用道具 举报

    1

    主题

    11

    帖子

    67

    积分

    注册会员

    Rank: 2

    积分
    67
     楼主| 发表于 2023-5-30 22:38:53 | 显示全部楼层
    本帖最后由 山语 于 2023-5-30 23:18 编辑

    谢谢大佬提供的脚本。

    我OpenConnect开了使用默认网关,运行了脚本后,不管哪里的IP还是全部走的vpn-oc这个接口
    回复

    使用道具 举报

    1

    主题

    11

    帖子

    67

    积分

    注册会员

    Rank: 2

    积分
    67
     楼主| 发表于 2023-6-1 10:09:55 | 显示全部楼层
    jkle 发表于 2023-5-31 17:14
    我用GL-INET的官方界面做了分流,由於添加太多也會崩潰或系統運行緩慢,所以放棄IP分流,而採用域名分流, ...

    我现在用了PBR+ipset,也还不错,加上DNSMASQ,算是搞定了
    回复

    使用道具 举报

    76

    主题

    2144

    帖子

    9889

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    9889

    官方人员

    发表于 2023-6-1 19:35:53 | 显示全部楼层
    山语 发表于 2023-5-30 22:38
    谢谢大佬提供的脚本。

    我OpenConnect开了使用默认网关,运行了脚本后,不管哪里的IP还是全部走的vpn-oc这 ...

    这个脚本并不是能直接运行就用的,你的根据你实际的接口情况修改一下
    回复

    使用道具 举报

    1

    主题

    11

    帖子

    67

    积分

    注册会员

    Rank: 2

    积分
    67
     楼主| 发表于 2023-6-1 21:41:12 | 显示全部楼层
    萝卜大侠 发表于 2023-6-1 19:35
    这个脚本并不是能直接运行就用的,你的根据你实际的接口情况修改一下
    1. make_ipset()
    2. {
    3.         ipset create chinaips hash:net family inet hashsize 1024 maxelem 1000000
    4. }

    5. set_ipset()
    6. {
    7.         ipset flush chinaips 2>/dev/null
    8.         while read -r line;do ipset add chinaips $line;done < /etc/chinaips
    9. }

    10. destroy_ipset()
    11. {
    12.         ipset destroy chinaips 2>/dev/null
    13. }

    14. set_route()
    15. {
    16.         ip route flush table 20
    17.         route="$(ip route)"
    18.         IFS_sav=$IFS
    19.         IFS=$'\n\n'
    20.         for line in $route
    21.         do
    22.                 IFS=$IFS_sav
    23.                 if [ -n "$(echo "$line"|grep -w -e eth1 -e br-lan)" ];then
    24.                         ip route add $line table 20
    25.                 fi
    26.                 IFS=$'\n\n'
    27.         done
    28.         IFS=$IFS_sav
    29. }

    30. set_route_rule()
    31. {
    32.         echo "ip rule  del from all fwmark 0x200000/0x200000 lookup 20 pref 20"
    33.         ip rule  del from all fwmark 0x200000/0x200000 lookup 20 pref 20
    34.        
    35.         echo "ip rule add from all fwmark 0x200000/0x200000 lookup 20 pref 20"
    36.         ip rule add from all fwmark 0x200000/0x200000 lookup 20 pref 20
    37. }

    38. set_firewall()
    39. {
    40.         while [ true ];do
    41.                 [ ! -f /var/run/fw3.lock ] && break
    42.                 sleep 1
    43.         done
    44.         touch /var/run/fw3.lock
    45.        
    46.         iptables -t mangle -N ROUTE_CHINAIPS
    47.         iptables -t mangle -F ROUTE_CHINAIPS
    48.         iptables -t mangle -D PREROUTING -j ROUTE_CHINAIPS 2>/dev/null
    49.         iptables -t mangle -I PREROUTING -j ROUTE_CHINAIPS
    50.         iptables -t mangle -I ROUTE_CHINAIPS -i br-lan -m set ! --match-set chinaips dst -j MARK --set-mark 0x200000/0x200000
    51.         iptables -t mangle -A ROUTE_CHINAIPS -j CONNMARK --save-mark --nfmask 0x200000 --ctmask 0x200000
    52.        
    53.        
    54.         iptables -t mangle -N ROUTE_CHINAIPS_OUT
    55.         iptables -t mangle -F ROUTE_CHINAIPS_OUT
    56.         iptables -t mangle -D OUTPUT -j ROUTE_CHINAIPS_OUT 2>/dev/null
    57.         iptables -t mangle -I OUTPUT -j ROUTE_CHINAIPS_OUT
    58.         iptables -t mangle -I ROUTE_CHINAIPS_OUT -m set ! --match-set chinaips dst -j MARK --set-mark 0x200000/0x200000
    59.         iptables -t mangle -A ROUTE_CHINAIPS_OUT -j CONNMARK --save-mark --nfmask 0x200000 --ctmask 0x200000
    60.         rm /var/run/fw3.lock
    61. }

    62. make_ipset
    63. set_ipset
    64. set_route
    65. set_route_rule
    66. set_firewall
    复制代码


    这是我稍微修改的,但不知道哪里没对
    回复

    使用道具 举报

    1

    主题

    11

    帖子

    67

    积分

    注册会员

    Rank: 2

    积分
    67
     楼主| 发表于 2023-6-1 21:50:14 | 显示全部楼层
    jkle 发表于 2023-6-1 16:56
    能分享一下吗?
    看是不是更好

    图片是基本设置
    最下面的vpn-policy-routing.cn.user脚本的内容:
    1. #!/bin/sh

    2. TARGET_IPSET='wan'
    3. TARGET_FNAME="/etc/chinaips"

    4. _ret=1

    5. if [ -s "$TARGET_FNAME" ]; then
    6.         ipset create $TARGET_IPSET hash:net
    7.         awk -v ipset="$TARGET_IPSET" '{print "add " ipset " " $1}' "$TARGET_FNAME" | ipset restore -! && _ret=0
    8. fi

    9. return $_ret
    复制代码


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

    1

    主题

    11

    帖子

    67

    积分

    注册会员

    Rank: 2

    积分
    67
     楼主| 发表于 2023-6-2 21:38:24 | 显示全部楼层
    jkle 发表于 2023-6-2 12:19
    如果沒錯應該是手動更新CHINAIPS文件吧!
    其實我也可以IP分流,比這個更簡單,直接官方界面添加即可,實際 ...

    可以把你的方案共享一下吗?
    回复

    使用道具 举报

    1

    主题

    11

    帖子

    67

    积分

    注册会员

    Rank: 2

    积分
    67
     楼主| 发表于 2023-6-3 20:34:34 | 显示全部楼层
    jkle 发表于 2023-6-2 22:24
    我對腳本不是很懂,用的也少,都是手動編輯配置文件,官方固件把功能都做出來了,不過添加規則太多會導致界 ...

    用的是哪个版本的官方固件?可以给个链接吗?
    回复

    使用道具 举报

    76

    主题

    2144

    帖子

    9889

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    9889

    官方人员

    发表于 2023-6-6 11:06:17 | 显示全部楼层
    山语 发表于 2023-6-1 21:50
    图片是基本设置
    最下面的vpn-policy-routing.cn.user脚本的内容:

    /etc/chinaips这个文件你要准备好,可以自己从其他地方下载或生成
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|gl-inet.cn ( 粤ICP备18130956号 )

    GMT+8, 2024-12-26 19:15 , Processed in 0.024871 second(s), 25 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表