Skip to content

Instantly share code, notes, and snippets.

@Senorsen
Last active July 25, 2018 07:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Senorsen/eca0d6f5fc9901e9fc09479572940265 to your computer and use it in GitHub Desktop.
Save Senorsen/eca0d6f5fc9901e9fc09479572940265 to your computer and use it in GitHub Desktop.
Merlin (koolshare) 帆游添加新主机
#!/bin/sh
#
# Author: Senorsen <senorsen.zhang@gmail.com>
# 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