关闭

OpenWrt-Shadowsocks linux bash代码研读

1679人阅读 评论(0) 收藏 举报
分类:

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/

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Ubuntu编译运行ss-redir打造透明代理Wifi环境

研究了一阵子的Openwrt路由器,主要是让ss作为一个服务跑在openwrt路由器上,然后该路由器就实现了透明代理功能,连入该路由器Wifi的设备都实现了代理,达到了科学上网的效果。后来又一想,既然...
  • lvshaorong
  • lvshaorong
  • 2016-10-24 13:56
  • 12096

iptables设置Linux全局代理

original url:http://www.2cto.com/os/201504/395181.html 一般用Linux的话都是用全局代理都是用http_proxy以及https_proxy这...
  • junmuzi
  • junmuzi
  • 2016-05-26 16:59
  • 5717

linux下ss命令源码学习(一):进程名、pid的获取及存储

linux ss源码学习进程名、pid的获取及存储当执行ss -p命令时,会返回进程的名称、pid信息,接下来就分析一下该信息是如何获取及存储的获取1、 当指定p参数时, 会将全局变量sho...
  • libinbin_1014
  • libinbin_1014
  • 2016-10-27 18:27
  • 1392

NETGEAR WNDR 4300路由器刷OpenWrt固件以及Shadowsocks+ChinaDNS配置教程总结

NETGEAR WNDR4300硬件分两种版本,只有CPU为AR系列的版本才可以刷OpenWrt。 硬件版本区别图 国行只有v1,美行分v1和v2,购买时注意甄别。以OpenWrt官方固件为例,适...
  • duanalien
  • duanalien
  • 2016-03-28 17:32
  • 10159

二级路由翻wall过程记录(openwrt+shadowsocks+chinadns+iptables方案)

GoAgent最近被封的越来越悲惨,能用但不怎么稳定,所以采用时下最流行的ss方案,仅涉及到客户端的安装配置,server端本文不考虑(直接买的ss账号),全过程略曲折,故记录下来,留作备忘.
  • ferstar
  • ferstar
  • 2014-12-29 13:13
  • 8702

linux下bash shell C语言实现 代码4.1版

  • 2010-04-21 14:11
  • 6.29MB
  • 下载

linux bash远程执行代码漏洞的补丁

  • 2014-10-20 12:41
  • 8.64MB
  • 下载

[笔记]我的Linux入门之路 - 02.Shadowsocks-Qt5配置

作为一个学习中的程序员,查wiki等,科学上网肯定是刚需。况且没有它很多东西都下不下来。我在windows环境下使用的是shadowsocks,那么在linux下也使用它。一、SS版本SS版本众多,而...
  • XieNaoban
  • XieNaoban
  • 2017-01-29 11:44
  • 18059

Linux安装配置Shadowsocks客户端及开机自动启动

Linux安装配置无GUI的Shadowsocks客户端,包括安装、配置Shadowsocks文件、系统代理、浏览器代理、设置开机自动启动等。
  • huihut
  • huihut
  • 2017-08-25 09:56
  • 2272

shadowsocks在linux下面的配置

实在受不了在Windows下编程,所以自己就安装了一个Ubutun,公司用的FQ软件shadowsocks在Windows上用起来很简单很爽,但是在Ubutun上的安装和配置就没那么简单了,写下这篇文...
  • gyh_420
  • gyh_420
  • 2017-11-26 11:29
  • 48
    个人资料
    • 访问:684369次
    • 积分:8974
    • 等级:
    • 排名:第2436名
    • 原创:227篇
    • 转载:44篇
    • 译文:1篇
    • 评论:72条
    文章分类