请教国内外IP分流 iptables ipset
我路由上建了一个OpenConnect接口,现在我想国内的IP走pppoe-wan口,国外的IP走OpenConnect的接口。ipset我添加了国内的IP,iptables那边应该怎么添加规则?
谢谢大佬不吝赐教。
jkle 发表于 2023-5-30 18:48
可以的話在配置文件添加路由規則,感覺這個最簡單
直接添加路由规则太多了,路由器直接断网了 :'( 山语 发表于 2023-5-30 19:39
直接添加路由规则太多了,路由器直接断网了
我这里有一个例子,希望对你有所帮助吧
https://royal-garment-e79.notion.site/0aae094c23d94d119a01496bd738203d 本帖最后由 山语 于 2023-5-30 23:18 编辑
萝卜大侠 发表于 2023-5-30 20:33
我这里有一个例子,希望对你有所帮助吧
https://royal-garment-e79.notion.site/0aae094c23d94d119a01496 ...
谢谢大佬提供的脚本。
我OpenConnect开了使用默认网关,运行了脚本后,不管哪里的IP还是全部走的vpn-oc这个接口
jkle 发表于 2023-5-31 17:14
我用GL-INET的官方界面做了分流,由於添加太多也會崩潰或系統運行緩慢,所以放棄IP分流,而採用域名分流, ...
我现在用了PBR+ipset,也还不错,加上DNSMASQ,算是搞定了 山语 发表于 2023-5-30 22:38
谢谢大佬提供的脚本。
我OpenConnect开了使用默认网关,运行了脚本后,不管哪里的IP还是全部走的vpn-oc这 ...
这个脚本并不是能直接运行就用的,你的根据你实际的接口情况修改一下 萝卜大侠 发表于 2023-6-1 19:35
这个脚本并不是能直接运行就用的,你的根据你实际的接口情况修改一下
make_ipset()
{
ipset create chinaips hash:net family inet hashsize 1024 maxelem 1000000
}
set_ipset()
{
ipset flush chinaips 2>/dev/null
while read -r line;do ipset add chinaips $line;done < /etc/chinaips
}
destroy_ipset()
{
ipset destroy chinaips 2>/dev/null
}
set_route()
{
ip route flush table 20
route="$(ip route)"
IFS_sav=$IFS
IFS=$'\n\n'
for line in $route
do
IFS=$IFS_sav
if [ -n "$(echo "$line"|grep -w -e eth1 -e br-lan)" ];then
ip route add $line table 20
fi
IFS=$'\n\n'
done
IFS=$IFS_sav
}
set_route_rule()
{
echo "ip ruledel from all fwmark 0x200000/0x200000 lookup 20 pref 20"
ip ruledel from all fwmark 0x200000/0x200000 lookup 20 pref 20
echo "ip rule add from all fwmark 0x200000/0x200000 lookup 20 pref 20"
ip rule add from all fwmark 0x200000/0x200000 lookup 20 pref 20
}
set_firewall()
{
while [ true ];do
[ ! -f /var/run/fw3.lock ] && break
sleep 1
done
touch /var/run/fw3.lock
iptables -t mangle -N ROUTE_CHINAIPS
iptables -t mangle -F ROUTE_CHINAIPS
iptables -t mangle -D PREROUTING -j ROUTE_CHINAIPS 2>/dev/null
iptables -t mangle -I PREROUTING -j ROUTE_CHINAIPS
iptables -t mangle -I ROUTE_CHINAIPS -i br-lan -m set ! --match-set chinaips dst -j MARK --set-mark 0x200000/0x200000
iptables -t mangle -A ROUTE_CHINAIPS -j CONNMARK --save-mark --nfmask 0x200000 --ctmask 0x200000
iptables -t mangle -N ROUTE_CHINAIPS_OUT
iptables -t mangle -F ROUTE_CHINAIPS_OUT
iptables -t mangle -D OUTPUT -j ROUTE_CHINAIPS_OUT 2>/dev/null
iptables -t mangle -I OUTPUT -j ROUTE_CHINAIPS_OUT
iptables -t mangle -I ROUTE_CHINAIPS_OUT -m set ! --match-set chinaips dst -j MARK --set-mark 0x200000/0x200000
iptables -t mangle -A ROUTE_CHINAIPS_OUT -j CONNMARK --save-mark --nfmask 0x200000 --ctmask 0x200000
rm /var/run/fw3.lock
}
make_ipset
set_ipset
set_route
set_route_rule
set_firewall
这是我稍微修改的,但不知道哪里没对 jkle 发表于 2023-6-1 16:56
能分享一下吗?
看是不是更好
图片是基本设置
最下面的vpn-policy-routing.cn.user脚本的内容:
#!/bin/sh
TARGET_IPSET='wan'
TARGET_FNAME="/etc/chinaips"
_ret=1
if [ -s "$TARGET_FNAME" ]; then
ipset create $TARGET_IPSET hash:net
awk -v ipset="$TARGET_IPSET" '{print "add " ipset " " $1}' "$TARGET_FNAME" | ipset restore -! && _ret=0
fi
return $_ret
jkle 发表于 2023-6-2 12:19
如果沒錯應該是手動更新CHINAIPS文件吧!
其實我也可以IP分流,比這個更簡單,直接官方界面添加即可,實際 ...
可以把你的方案共享一下吗? jkle 发表于 2023-6-2 22:24
我對腳本不是很懂,用的也少,都是手動編輯配置文件,官方固件把功能都做出來了,不過添加規則太多會導致界 ...
用的是哪个版本的官方固件?可以给个链接吗? 山语 发表于 2023-6-1 21:50
图片是基本设置
最下面的vpn-policy-routing.cn.user脚本的内容:
/etc/chinaips这个文件你要准备好,可以自己从其他地方下载或生成
页:
[1]