使用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
图 make menuconfig

图 选择shadowsocks-libev-polarssl
图 选择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架构,详细可参考如下架构列表:

继续阅读→