(在Ubuntu 16.04 64bit系统下)编译LEDE系统mvebu架构的package

由于博主本人使用的路由器是Linksys wrt1200ac(基于mvebu架构的CPU), 本文演示了在Ubuntu16.04系统下交叉编译mvebu架构的OpenWrt软件包过程.

注意事项:
1, 本文基于Ubuntu16.04, 理论上Debian 8 64bit也可以操作本文
2, 由于在make过程中还会数次连接网络去下载依赖包, 建议在操作前确保自己的网络是可以穿墙的
3, OpenWrt的/tmp目录体积最大, 进行安装软件以前, 应该先把软件拷贝到此目录.

准备环境及下载源码

sudo apt-get install gawk libncurses5-dev libz-dev zlib1g-dev  git ccache

wget https://downloads.lede-project.org/releases/17.01.2/targets/mvebu/generic/lede-sdk-17.01.2-mvebu_gcc-5.4.0_musl-1.1.16_eabi.Linux-x86_64.tar.xz

xz -d lede-sdk-17.01.2-mvebu_gcc-5.4.0_musl-1.1.16_eabi.Linux-x86_64.tar.xz 

tar xvf lede-sdk-17.01.2-mvebu_gcc-5.4.0_musl-1.1.16_eabi.Linux-x86_64.tar 

cd lede-sdk-17.01.2-mvebu_gcc-5.4.0_musl-1.1.16_eabi.Linux-x86_64

安装基础软件包

./scripts/feeds update
./scripts/feeds install libpcre
./scripts/feeds install zlib    #如果是fedora等系统请使用dnf install zlib-devel
./scripts/feeds install libopenssl

继续阅读

获取China大陆IP段的范围

这里有几个网站提供了大陆的IP段范围。别问我要这个列表干什么,我也不知道。

http://www.ip2location.com/blockvisitorsbycountry.aspx
老牌网站,国内很多人应该都知道,可以选择任意一个国家的IP段,然后可以输出多种格式。

https://www.countryipblocks.net/country_selection.php
跟上面的那个一样,多一个备份。

http://www.ipdeny.com/ipblocks/
一样是列出了所有国家的IP段文件,提供下载。

TP-LINK WR941N路由器刷OpenWrt + Shadowsocks

给TP-LINK WR941N v5路由器刷OpenWrt并配置Shadowsocks自动翻Qiang的过程。v5及以前版本的还没有缩水太厉害,还是4M ROM + 32MB RAM,因此可以刷英文版本的WR941ND(英文版本多了个D)的OpenWrt固件。

需要注意的几点:
1,/tmp目录空间最大,不论是路由固件还是任何软件包,都应该先拷贝到/tmp目录再进行安装;
2,在安装shadowsocks-libev-polarssl软件包的过程中,路由器需要连网,以安装其它依赖软件包;
3,OpenWrt官网下载固件的时候,不要选择snapshots分支的软件包,它属于开发版本,非常不稳定

1,更新固件
根据OpenWrt官网提供的建议,这里提供2种升级固件的方式,可以任选一种

sysupgrade:
sysupgrade -v /tmp/[specified firmware].bin 
OR
mtd:
mtd -r write /tmp/[specified firmware].bin firmware

刷全新固件
本文中,因为需要连网安装依赖包,故当成了二级路由器(网段设置成了192.168.3.x),避免跟上级路由(192.168.1.x)冲突。

cd /tmp
wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/openwrt-15.05-ar71xx-generic-tl-wr941nd-v4-squashfs-factory.bin
mtd -r write /tmp/openwrt-15.05-ar71xx-generic-tl-wr941nd-v4-squashfs-factory.bin firmware
#完成以后路由器会自动重启
#重启以后可以用telnet或者SSH登陆,用户名为root,密码一般为空或者root
#如果SSH密码为空,那么SSH会不停弹出输入密码的窗口,可以先使用telnet进去修改SSH密码

#初始化网络
vim /etc/config/network  #将lan的ipaddr修改为192.168.3.1
reboot

继续阅读

Open-Wrt设置PPPoE+永久修改网卡MAC地址

Open-Wrt永久修改Mac地址的过程,这里记录一下。

1,打开SSH远程管理
点击”System”-“Administration”,找到下面的”SSH Access”项(Dropbear就是Open-Wrt使用的SSH-Server程序),将下面对应的interface打开即可。这里我打开的是lan口。注意勾选下面的”Password authentication”和”Allow root logins with password”,然后”Save & Apply”;

2,设置PPPoE(宽带帐号)
之所以要先设置好网络,是因为如果先通过SSH修改网卡配置文件,然后再在Web页面设置PPPoE的话,会把先前网卡配置文件覆盖掉。所以需要先设置PPPoE。
点击”Network”-“Interfaces”,在下面找到Wan口,点击右边的”Edit”,将”Protocol”设置为”PPPoE”,下方填入帐号密码。如果知道MTU值,在”Advanced Settings”里将”Override MTU”改为想要的MTU值。其它的基本不用动,点击”Save & Apply”。

简单优化一下:
点击”Network”-“Firewall”,在下面的”Zones”里找到”Lan=>Wan”这一条,勾选右边的”MSS clamping”。该设置能普遍解决全国各地的电信运营商MTU值设置不当,导致手机WIFI连接时,QQ、微信等发不出去图片的问题。

3,永久修改网卡MAC地址
通过SSH连接上去,作如下修改

vi /etc/config/network
config interface 'wan'
        option ifname 'eth1'
        option _orig_ifname 'eth1'
        option _orig_bridge 'false'
        option proto 'pppoe'
        option username '宽带帐号'
        option password '宽带密码'
        option mtu '1488'
        option 'macaddr' '08:10:76:23:8B:19'  #添加这一行

vi /etc/rc.local  #添加如下几行
ifconfig eth1 down
ifconfig eth1 hw ether 08:10:76:23:8B:19
ifconfig eth1 up
exit 0

提示一下,如果要用WinSCP向Open-Wrt传输文件,文件协议需要选择SCP(不要选择默认的SFTP)。

配置DD-WRT的PPTP客户端

在DD-WRT上配置PPTP客户端的过程,记录一下,别问我为什么要干这个,我是为了跳过长城。该文章在小日本寄来的FC2免费路由器(对应型号:Buffalo WHR-G301N)上测试成功,刷的是2014.12.22号的DD-WRT版本

建议将DD-WRT升级至最新版,本文基于DD-WRT v24-sp2 (12/22/14) std版本配置成功。先前找个一个2013.11.20号版本的DD-WRT,结果总是配置失败,于是将DD-WRT升级至最新版,竟然一次成功。

1,将DDW-RT的防火墙和DMZ功能关闭
点击”Security”-“Firewall”,将”SPI Firewall”设置为”Disable”;
点击”NAT/QoS”-“DMZ”,将”use DMZ”设置为”Disable”;
点击”Services”-“Services”,将”SSHd”、”SSH TCP Forwarding”、”Password Login”全都设置为”Enable”

2,配置PPTP客户端
点击”Services”-“VPN”,找到”PPTP Client”,对其进行如下设置:
配置DD-WRT的PPTP客户端
其中,”MPPE Encryption”需要填写成”mppe required,no40,no56,stateless”,然后点击”Save”

3,配置开机自启动
点击”Administration”-“Commands”,将如下代码帖至”Commands”框内:

sleep 90
OLDGW=$(nvram get wan_gateway)
VPNSRV=$(nvram get pptpd_client_srvip)
VPNSRVSUB=$(nvram get pptpd_client_srvsub)
PPTPDEV=$(route -n | grep ^${VPNSRVSUB%.[0-9]*} | awk '{print $NF}' | head -n 1)
VPNGW=$(ifconfig $PPTPDEV | grep -Eo "P-t-P:([0-9.]+)" | cut -d: -f2)
route add -host $VPNSRV gw $OLDGW
route del default gw $OLDGW
route add default gw $VPNGW
ip route add 8.8.8.8 via $VPNGW
ip route add 8.8.4.4 via $VPNGW

然后点击下方的”Save Startup”

4,检测设置成功与否
在上一步的”Commands”页面,在下方的”Commands”框内输入reboot,然后点击下方的”Run Commands”,此时路由器会重启。
使用SSH连接上路由器,输入ps | grep pptp命令并回车,如果能看到如下进程,说明VPN已配置成功:
配置DD-WRT的PPTP客户端
有的DD-WRT版本不太稳定,SSH如果连接不上,可以将本地的SSH客户端(例如Xshell等)的登陆协议改为Telnet就可以登陆了。

补充说明:
1,第一次设置完成后,我并没有重启,导致笔记本地连接无线的时候提示连接到网络的时间超过了正常的时间,手机上也显示“正在分配IP地址”,但一直无法连接上。于是我找到”Setup”-“Basic Setup”,将”Use DNSMasq for DHCP”、”Use DNSMasq for DNS”全部取消(不启用),重启以后发现笔记本、手机均可以正常连接了。

2,经测试,在设置PPTP客户端时,MTU和MRU无须作特殊修改,保持默认的1450依然可以正常连接。

===================================
2015.02.04补充:
又换了一个路由器,刷了很多个版本的DD-WRT,用此方法,均不能成功连接。由此可见,DD-WRT非常不稳定,不建议新手使用。新手们还是去折腾Open-Wrt吧。

解决某些DD-WRT版本PPTP客户端拔号不正常的办法
在WEB界面,打开JFFS支持(详细介绍可以参考这篇文章):
点击”Administration”-“Management”-“JFFS2 Support”,勾选下方的”JFFS2″,不要勾选“Clean JFFS2″。然后”Save”,并且”Apply Settings”(即一定要重启,否则路由器上的/jffs分区不可写);
然后再参考这篇文章

补上一个DD-WRT永久修改MAC的方法:

nvram set wan_hwaddr=08:10:76:23:8B:1A
nvram set lan_hwaddr=08:10:76:23:8B:1C
nvram set et0macaddr=08:10:76:23:8B:1C
nvram set et0macaddr_safe=08:10:76:23:8B:1C
nvram commit   #等待10秒再运行下一条
reboot

二级无线路由当无线AP使用

二级无线路由当无线AP使用,网上好多教程都少了一步,导致设置不正确,最后自己还是折腾成功了。记录一下。

上级路由为A路由,下级路由为B路由(无线),现在要把B路由当作无线AP来使用,方法如下:

1,首先确定A路由的Lan口设置,我们假定为192.168.1.1,子网掩码255.255.255.0

2,单独把B路由连接至计算机,打开路由器设置界面,设置B路由的Wan口为自动获取IP,Lan口为192.168.0.1,子网掩码255.255.255.0,关闭DHCP,然后设定好无线网络的参数

3,将A路由的lan口连接至B路由的lan口(注意此步,不要连接错误,是两个lan口的连接)

然后,B路由就可以当作无线AP或者交换机来使用了。

=====================================================

后记:2012.05.18再次按此方法设置了一次,证明是可行的。但又发现了新的问题:

此前一直用B路由(192.168.1.1)上网,在第2步把B路由Lan口设置为192.168.0.1以后,重启路由器,笔记本搜索到无线网络的SSID信号,并能成功连接。

断开连接,进行第3步操作,把A路由的lan口与B路由的lan口连接,重新搜索无线网络,可以连接,但连接以后,发现不能上网,本机的无线网络IP是192.168.0.x。也就是说,无线网络认不出A路由的网关。

情急之下,拿了一根网线插入B路由的另一Lan口,并将网线连接至笔记本(此时没有连接无线网络)。这回可以上网了,本地连接里的IP成了192.168.1.x。看起来正常了。

拔掉这根网线,重新搜索无线网络,连接,发现本机无线网络IP仍是192.168.0.x,且仍然不能上网。于是强行把无线IP设置成192.168.1.3,网关设置成192.168.1.1。断开再次连接,这回一切正常。

事后想想,原因可能在于,笔记本会记住每一个无线网络SSID的网关信息,当下次连接该SSID的时候,会自动去连接相应网关。因此,如果你也遇到同样的问题,不防也试试我的方法,即:1,先用有线方式把确保二级路由畅通,2,强行更改本机无线网络的IP,然后再连接无线网络。