请选择 进入手机版 | 继续访问电脑版

forum.gl-inet.cn

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
    查看: 1137|回复: 16

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

    [复制链接]

    1

    主题

    11

    帖子

    65

    积分

    注册会员

    Rank: 2

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

    谢谢大佬不吝赐教。
    回复

    使用道具 举报

    17

    主题

    654

    帖子

    5293

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    5293
    发表于 2023-5-30 18:48:02 | 显示全部楼层
    可以的話在配置文件添加路由規則,感覺這個最簡單
    转转咸鱼搜索FreeRoute,歡迎諮詢交流
    https://youtu.be/W4dm-gMhUSs
    回复

    使用道具 举报

    1

    主题

    11

    帖子

    65

    积分

    注册会员

    Rank: 2

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

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

    使用道具 举报

    76

    主题

    2137

    帖子

    9566

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    9566

    官方人员

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

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

    使用道具 举报

    1

    主题

    11

    帖子

    65

    积分

    注册会员

    Rank: 2

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

    谢谢大佬提供的脚本。

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

    使用道具 举报

    17

    主题

    654

    帖子

    5293

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    5293
    发表于 2023-5-31 17:14:21 | 显示全部楼层
    本帖最后由 jkle 于 2023-5-31 17:16 编辑

    我用GL-INET的官方界面做了分流,由於添加太多也會崩潰或系統運行緩慢,所以放棄IP分流,而採用域名分流,將常用的境外網址添加即可,這樣運行輕巧高效,同時通道流量不會很大。
    转转咸鱼搜索FreeRoute,歡迎諮詢交流
    https://youtu.be/W4dm-gMhUSs
    回复

    使用道具 举报

    1

    主题

    11

    帖子

    65

    积分

    注册会员

    Rank: 2

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

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

    使用道具 举报

    17

    主题

    654

    帖子

    5293

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    5293
    发表于 2023-6-1 16:56:38 | 显示全部楼层
    山语 发表于 2023-6-1 10:09
    我现在用了PBR+ipset,也还不错,加上DNSMASQ,算是搞定了

    能分享一下吗?
    看是不是更好
    转转咸鱼搜索FreeRoute,歡迎諮詢交流
    https://youtu.be/W4dm-gMhUSs
    回复

    使用道具 举报

    76

    主题

    2137

    帖子

    9566

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    9566

    官方人员

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

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

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

    使用道具 举报

    1

    主题

    11

    帖子

    65

    积分

    注册会员

    Rank: 2

    积分
    65
     楼主| 发表于 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
    复制代码


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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-3-29 19:29 , Processed in 0.024669 second(s), 26 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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