Last active
July 25, 2018 07:57
-
-
Save Senorsen/eca0d6f5fc9901e9fc09479572940265 to your computer and use it in GitHub Desktop.
Merlin (koolshare) 帆游添加新主机
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# | |
# Author: Senorsen <[email protected]> | |
# Description: merlin 路由器帆游添加第二台主机 | |
# Link: https://gist.github.com/Senorsen/eca0d6f5fc9901e9fc09479572940265 | |
# | |
# 使用方法: | |
# 0. 到帆游官网关闭插件(加速) | |
# 1. ssh 到路由器, vi /jffs/jsq.sh ,将本文件内容拷入(或者下载此脚本,传到路由器 /jffs 下) | |
# 2. 执行: `sh /jffs/jsq.sh 新主机 IP 地址` (例如:`sh /jffs/jsq.sh 172.22.8.64`) | |
# 3. 断开 ssh 连接,到官网启动加速 | |
# | |
# 注意: | |
# 这个脚本运行后,在路由器没有重启,或者防火墙没被重置下,新添加的主机加速是有效的,否则可能需要重新运行。 | |
# 如要取消加速,执行:`sh /jffs/jsq.sh IP 地址 remove` | |
IP=$1 | |
REMOVE=$2 | |
OPS="D A" | |
if [ "$REMOVE" = "remove" ] || [ "$REMOVE" = "r" ] || [ "$REMOVE" = "rm" ]; then | |
OPS="D" | |
echo "Remove IP: $IP" | |
elif [ "$REMOVE" = "" ]; then | |
echo "Add IP: $IP" | |
ipset create funjsq hash:net -exist | |
ipset create funjsq100 hash:ip -exist | |
ipset create funjsq101 hash:ip -exist | |
else | |
echo "Wrong argument: parameter 2 should be empty or 'remove'." | |
exit 1 | |
fi | |
for op in $OPS; do | |
if [ $op = "A" ]; then | |
fop="I" | |
else | |
fop=$op | |
fi | |
iptables -t filter -$fop FORWARD -s $IP -o funjsq -j ACCEPT | |
iptables -t filter -$fop FORWARD -d $IP -j ACCEPT | |
iptables -t mangle -$op PREROUTING -s $IP -j MARK --set-xmark 0xff100000 | |
iptables -t mangle -$op PREROUTING -s $IP -p tcp --dport 80 -j MARK --set-xmark 0xff200000 | |
iptables -t mangle -$op PREROUTING ! -p udp -m set --match-set funjsq dst -s $IP -j MARK --set-xmark 0xff200000 | |
iptables -t mangle -$op PREROUTING -s $IP -m set --match-set funjsq101 dst -j MARK --set-xmark 0xff200000 | |
iptables -t mangle -$op PREROUTING -s $IP -m set --match-set funjsq100 dst -j MARK --set-xmark 0xff100000 | |
iptables -t mangle -$op PREROUTING -s $IP -p udp -m multiport --dports 9307,1:1023 -j MARK --set-xmark 0xff200000 | |
iptables -t nat -$op POSTROUTING -s $IP -o funjsq -j MASQUERADE | |
done | |
echo "Done." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment