rav009的专栏

Python SQL ETL .net 数据挖掘

OpenWrt-Shadowsocks linux bash代码研读

Project git url: https://github.com/shadowsocks/openwrt-shadowsocks
包含 ss-{local,redir,tunnel} 三个可执行文件 
默认启动 ss-local 建立本地 SOCKS 代理
shadowsocks-libev-spec 为针对 OpenWrt 路由器的优化版本包含 ss-{redir,rules,tunnel} 三个可执行文件 
ss-redir 建立透明代理, ss-tunnel 做 DNS 查询转发 
ss-tunnel 默认转发 127.0.0.1:5353 至 8.8.4.4:53通过 ShadowSocks 服务器查询 DNS 用于线路优化 
ss-rules 可设置 ignore.list 中的 IP 流量不走代理 
ss-rules 可支持 ipset 和 iptables 两种转发规则 
默认使用性能更好的 ipset 规则, 对不支持的设备使用 iptables


if [ -n "$lan_ac_ip" ]; then
	case $lan_ac_mode in
		1) ac_args="w$lan_ac_ip"
		;;
		2) ac_args="b$lan_ac_ip"
		;;
	esac
fi

上面的代码展示了bash中 if 和 case 的用法, 另外bash中也有else 和 elif 这两个关键词.注意if后面要加一个"then"



: ${timeout:=60}

这段代码的意思是如果目前没有定义过timeout这个变量的话, 就把它定义为 60


cat <<-EOF >$CONFIG_FILE

cat << EOF表示从stdin中读取,当读到EOF时终止, 而-EOF是指如果读到 制表符 加上 EOF 的话也终止, 最后把结果输出到$CONFIG_FILE中.


[ "$tunnel_enable" = 1 ] && start_tunnel

&&符号的意思是当左边的命令成功时才执行右边的命令. 注: 在linux bash中0表示true

此外还有一个 || 表示左边命令失败时才执行右边的命令.


	ipset -! -R <<-EOF || return 1
		create ss_spec_lan_ac hash:net
		$(for ip in ${LAN_AC_IP:1}; do echo "add ss_spec_lan_ac $ip"; done)
EOF
ipset 是iptables的一个扩展, 用于方便管理大量IP的出入规则. -! 表示忽略一些重复添加的或者删除已经被删过的规则时发生的错误. -R表示从标准输入中读取.第二行和第三行表示创建了一个ip的集合,并向其中添加了若干IP.


iptables -t nat -A PREROUTING -p tcp -m set ! --match-set ss_spec_lan_ac src -m comment --comment "_SS_SPEC_RULE_" -j SS_SPEC_WAN_AC
iptables就是一个具体的防火墙了, "-t nat"表示应用范围在nat转发方面, "-A PREOUNTING"表示添加一条在转发前生效的规则,"-p tcp"表示对tcp协议应用规则, "-m set ! --match-set ss_spec_lan_ac src"是装了ipset以后才有的扩展的参数. 表示针对源地址(src)不是(感叹号)ss_spec_lan_ac集合中的ip包才应用规则. "-m comment"是加上注释. "-j"就是指明具体应用哪一条规则了.可以使用命令 "iptables -t nat -L" 来看所有的规则.

备注:

iptables-save 可以把目前iptables的规则输出到标准输出, 可以通过-t来指定输出哪个表

还有一篇文章值得研究: http://felixqu.com/2015/07/27/tomato-arm-jffs-entware-shadowsocks/

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rav009/article/details/49907025
个人分类: bash shell 杂类
想对作者说点什么? 我来说一句

Linux bash基本语法笔记

2017年09月07日 4KB 下载

linux高级bash编程(abs)

2008年09月02日 2.85MB 下载

原创买3D彩票程序

2015年08月06日 54KB 下载

liferay代码研读

2007年05月17日 3.82MB 下载

abs和bash编程

2010年05月05日 3.56MB 下载

Liferay代码研读

2009年08月14日 784KB 下载

没有更多推荐了,返回首页

不良信息举报

OpenWrt-Shadowsocks linux bash代码研读

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭