sed流编辑器是shell中处理文本内容的一大利器。sed命令从文本流中读取一行文本到模式空间中进行相应的命令、或脚本处理,因此在处理换行符时会有点特殊。
使用ipset让openwrt上的shadowsocks更智能的重定向流量
OpenWRT上从2.66版开始的Dnsmasq已经支持IPSET,但是默认的版本不支持ipset,需要dnsmasq-full.
查看dnsmasq是否支持ipset
[root@PandoraBox:/root]# dnsmasq -v
Dnsmasq version 2.72 Copyright (c) 2000-2014 Simon Kelley
Compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ipset auth DNSSEC loop-detect
如果 Compile time options显示ipset就是支持的.no-ipset就是不支持.
编译shadowsocks-libev for OpenWrt ipk安装包
网上也许没有适合自己路由器的shadowsocks-libev for OpenWrt ipk 安全包,即使有也不一定是最新源码编译的。自己动手自力更生是个好办法。
下面是在Ubuntu 64bit下编译shadowsocks-libev for OpenWrt ipk安装包的步骤:
安装依赖库,不同的操作系统版本可能要作相应调整
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext
下载OpenWrt源代码
cd /opt
git clone git://git.openwrt.org/openwrt.git
下载shadowsocks-libev源码
cd /opt/openwrt/package
git clone https://github.com/madeye/shadowsocks-libev.git
更新Feeds,使package在make menuconfig中可用,而不是真正安装或编译
cd /opt/openwrt
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
先编译要用到的工具和库
make prereq && make tools/install && make toolchain/install
等待时间较长,可以先和大妈一起去跳个广场舞,制造更多噪音恶心一下别人:)
make menuconfig配置选项
有三个选项:
y: 编译进固件
m: 编译出安装包,但不打包进固件
n: 排除
输入命令make menuconfig进入配置程序
Target System: Atheros AR7xxx/AR9XXX (Default value,不同的路由器,可能选择不同)
Subtarget: Generic (Default value)
Target Profile: TP-LINK TL-WR2543N/ND(因我们只是编译包,这步可以不选)
Network, 选择shadowsocks-libev-polarssl, 按m设置为编译独立ipk安装包
Save && Exit
图 make menuconfig
图 选择shadowsocks-libev-polarssl
编译shadowsocks-libev for OpenWrt
make V=99 package/shadowsocks-libev/openwrt/compile
编译结果文件
输出文件是 openwrt/bin/ar71xx/packages/base/shadowsocks-libev-polarssl_1.4.6_ar71xx.ipk
把文件scp复制到OpenWrt路由器/tmp,就可以 opkg install shadowsocks-libev-polarssl_1.4.6_ar71xx.ipk 安装了。
转载自:这里
U盘启动openwrt
首先,更新软件列表(每次重启路由器后,需要先运行一次这个,才能安装软件包)
opkg update
1.安装移动存储设备支持
opkg install kmod-usb-storage
立刻就可以查看u盘及其分区
ls /dev
观察里面是否出现sda sda1 sda2 sda3等字样
sda说明是名为sda的设备 sda1是它的第一个分区 后面依次推类
2.安装EXT4文件系统
opkg install kmod-fs-ext4
3.安装文件系统格式化及检查工具(若不安装不能使用mkfs.ext4格式化命令)
opkg install e2fsprogs
4.安装u盘分区工具(选择安装)
opkg install cfdisk
然后可以进行u盘分区
cfdisk /dev/sda
在界面里进行分区,可以分为主分区或者逻辑分区
分为主分区 那么就会使用名字sda1 到sda4,逻辑分区 使用sda5之后的名字
这里只具有分区功能,不会格式化分区。
我把u盘分为三个分区sda1 sda2 sda3
5.格式化u盘
mkfs.ext4 /dev/sda1 将第一个分区格式化为ext4格式
mkswap /dev/sda2 将第二个分区格式化为swap交换分区
mkfs.ext4 /dev/sda3 将第三个分区格式化为ext4格式
6.安装开机从u盘启动
opkg install block-mount
7.修改 /etc/config/fstab 文件,让系统启动自动挂载,修改成如下
最上方这一段保留
config global automount
option from_fstab 1
option anon_mount 1
config global autoswap
option from_fstab 1
option anon_swap 0
下方的修改
方法一(最简单,推荐):
config mount #把sda1分区挂载为系统
option target /overlay
option device /dev/sda1
option fstype ext3
option options rw,sync
option enabled 1
option enabled_fsck 0
config swap #把sda2分区挂载为交换分区
option device /dev/sda2
option enabled
config mount #把sda3分区挂载在mnt文件夹上,作为存储网站和文件的地方
option target /mnt
option device /dev/sda3
option fstype ext4
option options rw,sync
option enabled 1
方法二:
config mount
# option target /home #这一行要不要无所谓了,我一般是去掉或者在前面加一个“#”
option device /dev/sda1
option fstype ext3
option options rw,sync
option enabled 1
option is_rootfs 1
config swap
option device /dev/sda2
option enabled
config mount
option target /mnt
option device /dev/sda3
option fstype ext4
option options rw,sync
option enabled 1
方法三:
config mount
option target /
option device /dev/sda2
option fstype ext3
option options rw,sync
option enabled 1
option enabled_fsck 0
config swap
option device /dev/sda2
option enabled
config mount
option target /mnt
option device /dev/sda3
option fstype ext4
option options rw,sync
option enabled 1
8.执行如下命令让其生效(选择执行,因为默认是生效的)
/etc/init.d/fstab enable
9.挂载u盘
mount /dev/sda1 /mnt/
10.建立一个用来同步系统文件的临时文件夹
mkdir /tmp/root
11.挂载并同步系统根目录“/”到 /tmp/root
mount -o bind / /tmp/root
[右边备份系统用,可不用关注:压缩tar -cpzvf /tmp/root.tar.gz /mnt/root 解压缩tar -xpzvf /tmp/root.tar.gz]
12.拷贝/tmp/root下所有文件到 “/mnt”,这个其实就是把系统文件复制到你的U盘了
cp /tmp/root/* /mnt -a
[右边为其他需求的备选命令,可不用关注:rm -rf 删除命令]
11、卸载 解除系统文件同步
umount /tmp/root
7、方便你以后知道是不是从U盘启动了(此步非必须)
从u盘上修改/mnt/etc/banner,添加一点点标识 比如boot from usb
15.重启路由器
reboot
观察欢迎界面是否出现boot from usb
df -h 查看磁盘使用及挂载情况
基于OPENWRT 配置自动穿墙路由器
手上有联想云路由一个,在网上查了一些例子,使用shadowsocks自动穿墙很好用.以下是配置步骤
opkg update
opkg install libopenssl pdnsd iptables-mod-nat-extra
wget http://dl.bintray.com/aa65535/opkg/shadowsocks-libev/2.5.6/ramips/shadowsocks-libev-polarssl_2.5.6-1_ramips_24kec.ipk
opkg install shadowsocks-libev_1.4.8-3_ramips_24kec.ipk
opkg install https://github.com/shadowsocks/luci-app-shadowsocks/releases/download/v1.3.7/luci-app-shadowsocks_1.3.7-1_all.ipk
不同的路由要下载不同架构的版本.下错了是安装不上的,联想云路由是 MT7620A芯片,应该下载ramips架构,详细可参考如下架构列表: