之前买了一个MiniPC和一张Qualcomm Atheros QCA988x芯片的mini PCI-E网卡。打算用来实现家里的802.11ac 环境。

但网卡一直只能工作在802.11n模式下,无法实现802.11ac。翻来覆去的找了很多资料,终于在昨天攻克了难关(其实答案很简单,就是英语水平不过关,明明答案已经摆在眼前,就是没有留意到。自我鄙视一下)。原来Atheros的EEPROM有锁区限制,如果我们所在地区与它的EEPROM地区不在同一个地区的话,802.11ac是被禁用的。

怎么查看网卡是否支持802.11ac呢?我们可以使用iw list命令,其中有一段显示5GHz频道的信息,如:

(什么?你在系统中找不到ath的无线网卡?这说明你的kernel太旧或编译时没有加入支持ath网卡的驱动和模块。怎么破?自己编译kernel吧)

Frequencies:
* 5180 MHz [36] (23.0 dBm)
* 5200 MHz [40] (23.0 dBm)
* 5220 MHz [44] (23.0 dBm)
* 5240 MHz [48] (23.0 dBm)
* 5260 MHz [52] (23.0 dBm) (radar detection)
DFS state: usable (for 87672 sec)
* 5280 MHz [56] (23.0 dBm) (radar detection)
DFS state: usable (for 87672 sec)
* 5300 MHz [60] (23.0 dBm) (radar detection)
DFS state: usable (for 87672 sec)
* 5320 MHz [64] (23.0 dBm) (radar detection)
DFS state: usable (for 87672 sec)
* 5500 MHz [100] (disabled)
* 5520 MHz [104] (disabled)
* 5540 MHz [108] (disabled)
* 5560 MHz [112] (disabled)
* 5580 MHz [116] (disabled)
* 5600 MHz [120] (disabled)
* 5620 MHz [124] (disabled)
* 5640 MHz [128] (disabled)
* 5660 MHz [132] (disabled)
* 5680 MHz [136] (disabled)
* 5700 MHz [140] (disabled)
* 5720 MHz [144] (disabled)
* 5745 MHz [149] (30.0 dBm)
* 5765 MHz [153] (30.0 dBm)
* 5785 MHz [157] (30.0 dBm)
* 5805 MHz [161] (30.0 dBm)
* 5825 MHz [165] (30.0 dBm)

不同的网卡支持的频道不一样,但如果你的网卡并没有显示出这些5GHz频道的话,就说明你的网卡不支持802.11ac了,你可以死心了。

但如果你在频道后看到(disabled),或(passive scanning)或(no IBSS)字样的话,不好意思,这个频道你也用不了。如果所有频道都用不了的话,那么就说明你的网卡被锁区了。怎么破?重新编译ath网卡的驱动,避开网卡的驱动程序检查EEPROM中的区域就可以了。

说了这么久,到头来就是重新编译kernel的问题了。

(1) 到https://www.kernel.org/下载最新的稳定版。并解压到Linux服务器中,(比如/usr/local/src)

(2) 进入解压后的kernle 源代码目录中的drivers/net/wireless/ath子目录。

(3) vi regd.c  (编辑regd.c这个文件,就是为了让网卡驱动禁用检查EEPROM区域)

(A) 在文件第一行添加一行“#define ATH_USER_REGD 1

(B) 在文件中找出如下四个函数的定义部分,并在函数中添加如下红色行。

(a)   ath_reg_apply_beaconing_flags

ath_reg_apply_beaconing_flags(struct wiphy *wiphy,
struct ath_regulatory *reg,
enum nl80211_reg_initiator initiator)
{
enum ieee80211_band band;
struct ieee80211_supported_band *sband;
struct ieee80211_channel *ch;
unsigned int i;

#ifdef ATH_USER_REGD
        return;
#endif

for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
if (!wiphy->bands[band])
continue;
sband = wiphy->bands[band];
for (i = 0; i < sband->n_channels; i++) {
ch = &sband->channels[i];
__ath_reg_apply_beaconing_flags(wiphy, reg,
initiator, ch);
}
}
}

################################################################

(b)  ath_reg_apply_ir_flags

ath_reg_apply_ir_flags(struct wiphy *wiphy,
struct ath_regulatory *reg,
enum nl80211_reg_initiator initiator)
{
struct ieee80211_supported_band *sband;

#ifdef ATH_USER_REGD
        return;
#endif

sband = wiphy->bands[IEEE80211_BAND_2GHZ];
if (!sband)
return;

switch(initiator) {
case NL80211_REGDOM_SET_BY_COUNTRY_IE:
ath_force_clear_no_ir_freq(wiphy, 2467);
ath_force_clear_no_ir_freq(wiphy, 2472);
break;
case NL80211_REGDOM_SET_BY_USER:
if (!ath_reg_dyn_country_user_allow(reg))
break;
ath_force_clear_no_ir_freq(wiphy, 2467);
ath_force_clear_no_ir_freq(wiphy, 2472);
break;
default:
ath_force_no_ir_freq(wiphy, 2467);
ath_force_no_ir_freq(wiphy, 2472);
}
}

(c)  static void ath_reg_apply_radar_flags

static void ath_reg_apply_radar_flags(struct wiphy *wiphy)
{
struct ieee80211_supported_band *sband;
struct ieee80211_channel *ch;
unsigned int i;

#ifdef ATH_USER_REGD
        return;
#endif

if (!wiphy->bands[IEEE80211_BAND_5GHZ])
return;

sband = wiphy->bands[IEEE80211_BAND_5GHZ];

for (i = 0; i < sband->n_channels; i++) {
ch = &sband->channels[i];
if (!ath_is_radar_freq(ch->center_freq))
continue;
/* We always enable radar detection/DFS on this
* frequency range. Additionally we also apply on
* this frequency range:
* – If STA mode does not yet have DFS supports disable
*   active scanning
* – If adhoc mode does not support DFS yet then
*   disable adhoc in the frequency.
* – If AP mode does not yet support radar detection/DFS
*   do not allow AP mode
*/
if (!(ch->flags & IEEE80211_CHAN_DISABLED))
ch->flags |= IEEE80211_CHAN_RADAR |
IEEE80211_CHAN_NO_IR;
}
}

################################################################

(d)  ath_regd_init_wiphy

ath_regd_init_wiphy(struct ath_regulatory *reg,
struct wiphy *wiphy,
void (*reg_notifier)(struct wiphy *wiphy,
struct regulatory_request *request))
{
const struct ieee80211_regdomain *regd;

#ifdef ATH_USER_REGD
        return 0;
#endif

wiphy->reg_notifier = reg_notifier;
wiphy->regulatory_flags |= REGULATORY_STRICT_REG |
REGULATORY_CUSTOM_REG;

if (ath_is_world_regd(reg)) {
/*
* Anything applied here (prior to wiphy registration) gets
* saved on the wiphy orig_* parameters
*/
regd = ath_world_regdomain(reg);
wiphy->regulatory_flags |= REGULATORY_COUNTRY_IE_FOLLOW_POWER;
} else {
/*
* This gets applied in the case of the absence of CRDA,
* it’s our own custom world regulatory domain, similar to
* cfg80211’s but we enable passive scanning.
*/
regd = ath_default_world_regdomain();
}

wiphy_apply_custom_regulatory(wiphy, regd);
ath_reg_apply_radar_flags(wiphy);
ath_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, reg);
return 0;
}

##########################################################

下面就开始编译kernel (若编译过程中出错,说明你的系统环境区少了一些必须的软件,请通过yum下载安装吧。具体请google,不在这文章中详说了):

重新回到kernel源代码的根目录

make clean

make mrproper

cp /boot/config-`uname -r`.`uname -m` ./.config

make oldconfig

cat .config |grep ATH10K  (确保CONFIG_ATH10K和CONFIG_ATH10K_PCI是等于m。

make

make modules_install

make install

成功后,在/boot/grub/grub.conf 下就多了一个启动项(tital)。

重启电脑进入新的kernel。

这时,你应该可以在系统中找到无线网卡(通常是wlan0)了。如果你以为到这里就大功告成的话,对不起,你才完成了一半。

Qualcomm Atheros的网卡,不但需要驱动程序,还需要加载Firmware。那要什么Firmware呢?我们可以通过如下命令查看当前kernel将会加载什么Firmware。

# modinfo ath10k_pci | grep firmware

(下面是我的系统中看到的结果)

firmware:       ath10k/QCA9377/hw1.0/board.bin
firmware:       ath10k/QCA9377/hw1.0/firmware-5.bin
firmware:       ath10k/QCA6174/hw3.0/board-2.bin
firmware:       ath10k/QCA6174/hw3.0/board.bin
firmware:       ath10k/QCA6174/hw3.0/firmware-5.bin
firmware:       ath10k/QCA6174/hw3.0/firmware-4.bin
firmware:       ath10k/QCA6174/hw2.1/board-2.bin
firmware:       ath10k/QCA6174/hw2.1/board.bin
firmware:       ath10k/QCA6174/hw2.1/firmware-5.bin
firmware:       ath10k/QCA6174/hw2.1/firmware-4.bin
firmware:       ath10k/QCA988X/hw2.0/board-2.bin
firmware:       ath10k/QCA988X/hw2.0/board.bin
firmware:       ath10k/QCA988X/hw2.0/firmware-5.bin
firmware:       ath10k/QCA988X/hw2.0/firmware-4.bin
firmware:       ath10k/QCA988X/hw2.0/firmware-3.bin
firmware:       ath10k/QCA988X/hw2.0/firmware-2.bin
firmware:       ath10k/QCA988X/hw2.0/firmware.bin   

由于我的网卡是QCA988X版本,所以我所关系的就是最后几行。怎么知道我的网卡的信号?可以通过如下命令:

# dmesg |grep ath10k_pci

其中有一句“ath10k_pci 0000:01:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043022ff sub 11ad:6614” 可以确认我的网卡的型号。

由于不同的kernel需要不同的firmware,因此请以“modinfo ath10k_pci | grep firmware”命令中看到的firmware版本为准。

board-2.bin和board.bin 两者选其一。

firmware.bin ~ firmware-5.bin 六者选其一 (我选的是最新的firmware-5.bin)。

我们可以从https://github.com/kvalo/ath10k-firmware下载我们需要的firmware。

在里面,我找到了board.bin和最新的firmware-5.bin_10.2.4.70.31-2。

把这两个文件上传的服务器的/lib/firmware/ath10k/QCA988X/hw2.0/下,并把firmware-5.bin_10.2.4.70.31-2改名为firmware-5.bin。

重启服务器。

检查服务器是否有正常加载firmware。

# dmesg |grep ath10k_pci

如果看到如下两行,就说明board.bin和firmware-5.bin已经成功加载了。

ath10k_pci 0000:01:00.0: firmware ver 10.2.4.70.31-2 api 5 features no-p2p,raw-mode,mfp crc32 fee9a3e8

ath10k_pci 0000:01:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08

由于我一直没有找到board-2.bin,而且系统会从上往下找firmware加载,所以它会先找board-2.bin,并出现如下错误。不够也没有关系,因为我们有board.bin。

ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/QCA988X/hw2.0/board-2.bin failed with error -2

到此,ath10k网卡总算是安装好了。我们再检查5GHz的频道是否有可用的。

# iw list

这次,之前有(passive scanning)或(no IBSS)的频道都变成可用的了。

我们就可以在hostapd中使用这些频道。

下面是我的hostpad.conf配置,你可以参考一下

driver=nl80211
hw_mode=a
channel=0
interface=wlan0
ctrl_interface=/var/run/hostapd
disassoc_low_ack=1
preamble=1
auth_algs=1
wpa=2
ssid=xxxxxx
bridge=WIFI
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
wpa_passphrase=xxxxxxxx
wmm_enabled=1
ignore_broadcast_ssid=0

ieee80211n=1
ht_capab=[HT20][HT40+]
ieee80211ac=1
vht_oper_chwidth=1
vht_oper_centr_freq_seg0_idx=42
vht_capab=[MAX-MPDU-11454][RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-STBC-1][RX-ANTENNA-PATTERN][TX-ANTENNA-PATTERN]

wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0

tx_queue_data3_aifs=7
tx_queue_data3_cwmin=15
tx_queue_data3_cwmax=1023
tx_queue_data3_burst=0
tx_queue_data2_aifs=3
tx_queue_data2_cwmin=15
tx_queue_data2_cwmax=63
tx_queue_data2_burst=0
tx_queue_data1_aifs=1
tx_queue_data1_cwmin=7
tx_queue_data1_cwmax=15
tx_queue_data1_burst=3.0
tx_queue_data0_aifs=1
tx_queue_data0_cwmin=3
tx_queue_data0_cwmax=7
tx_queue_data0_burst=1.5

logger_syslog=127
logger_syslog_level=2
logger_stdout=127
logger_stdout_level=2

(这文章废话较多,有用的就是红色部分。大家可以直接看红字,哈哈……)

前端时间在京东买了个路由宝京东白条版。本来是为了放在网络中用闲时带宽赚点小费的。但使用后,才发现想用它来赚钱,只能是“呵呵……”了。我家的ADSL网络,上传速度有6Mbps,但每天最多只能赚250个优酷币,相当于RMB0.625元。看来优酷真的当我们是250。

后来自从买了迅雷赚钱宝后,这路由宝就直接扔到了仓库。

但前两天突然发现网站有人放出了路由宝的0818 root版本后,发现这路由宝真的是一个宝。由于路由宝有不同的版本,大家可以自己上网搜索自己的版本。

我的路由宝本来是最新版的ROM(1119版),下载了0818 root 版的rom后,直接在路由宝的后台网页上手动上传rom更新。当路由宝重启后,发现版本已经降级到0818版。通过putty SSH到路由宝的IP发现已经可以登录,root用户的默认密码是admin。

登录后,可第一时间修改root密码。可通过“passwd”命令修改root密码。

路由宝自带128MB内存、16MBROM和一张8GB的TF卡,MT7620a MIPS架构,400MHz的单核CPU。对于一台只要80元的路由器来说,真的是业界良心。

Disk /dev/mtdblock0: 16 MB, 16777216 bytes

Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes

#free -m
total         used         free       shared      buffers
Mem:        125208       104500        20708            0         4848

路由宝的OS也是openwrt,但奇怪的是,它用的kernel是2.6.36。我在openwrt官网上找不到哪个版本是用这个版本的Kernel。导致找不到究竟可以用哪个openwrt的软件源安装其他软件。

#uname –all
Linux Youku-router 2.6.36 #1 Fri Aug 14 18:21:34 CST 2015 mips GNU/Linux

现在,我们开始把它改造为迅雷下载器。

为了保证路由宝的赚钱功能不失效,我们就不要打它自带的8GB的TF卡主意了。而且8GB也太少了点。由于路由宝上缺少格式化工具,所以我们可以先通过其他linux系统格式化一个U盘或USB移动硬盘,可格式化为ext4然后接到路由宝的USB口上。路由宝会自带加载这个USB盘到/mnt/sda*(这里*代表数字,若你的USB盘有多个分区,就会出现sda1、sda2……)。下文假设我们只有一个分区,对应的目录是/mnt/sda1。

为了能够让这个USB盘在每次机器重启时都可以自带加载,我们需要做如下设置。

# /etc/init.d/umount disable

(这个umount启动脚本应该是路由宝的工程师做,我才是为了不让我们插入的USB盘在启动时被自动加载而已。)

为了不让路由宝一天24小时暂用家里的带宽,所以不让路由宝一开机就运行赚钱工具。

# /etc/init.d/youku disable

在电脑上,到http://luyou.xunlei.com/thread-12545-1-1.html下载xware 1.0.31版。路由宝用的是“Xware1.0.31_mipsel_32_uclibc.zip ”这个版本。解压后,通过winscp上传到/mnt/sda1的新目录xunlei下。

# cd /mnt/sda1/xunlei

# ./portal

(若看到软件可以正常运行并得到激活码,就去http://yuancheng.xunlei.com上绑定)

接着把这程序添加到启动项中

# vi /etc/rc.local

(在exit 0 前添加如下两句)

################

cd /mnt/sda2/xunlei
./portal

################

创建一个脚本,定时监测优酷路由宝的服务是否在工作,如果不在就重启它。

# vi /root/check-youku.sh
. /etc/profile
if !(netstat -lntp |grep 4466);then
/etc/init.d/youku restart
fi

创建一个脚本,定时监测迅雷远程下载是否工作,如果不在就重启它。

# vi /root/check-xunlei.sh
. /etc/profile > /dev/null 2>&1
if !(ps w | grep ETMDaemon |grep -v grep);then
cd /mnt/sda2/xunlei
./portal
fi

# chmod 755 /root/check-*

最后添加cronjob,定时启动路由宝和迅雷

# crontab -e
*/10 0-9 * * * /root/check-youku.sh > /dev/null 2>&1
0 10 * * * /etc/init.d/youku stop > /dev/null 2>&1
*/7 * * * * /root/check-xunlei.sh > /dev/null 2>&1

上面三个任务分别是:

(1)在每天0:00 ~ 9:59期间,每隔10分钟检查优酷是否运行中,不是就重启,意思就是让它在这时间段去赚钱。

(2)在10:00时把优酷关了(为什么是10:00关?因为我的迅雷赚钱宝在10:00就开始赚钱了,不要让这个无用的路由宝占了我宝贵的上传带宽,哈哈…..)

(3)每隔7分钟就检查迅雷远程下载是否在运行,不是就重启它。这里我的迅雷是每天24小时都在跑。如果你不喜欢,就自己改。

到此,路由宝终于可以有有用之地了。而且远程下载还挺快(因为内存够多,比把一写只有刻录的16MB路由器改造成远程下载器强多了)。

 

大家有没有发现,最近网络越来越不好用。尤其是到国外的线路,简直慢得一塌糊涂。

本来马路就那么宽,之前用高收费限制用户带宽,就相当于单双号通行。

没钱的就只能单日出行,有钱的可以买两个号。速度自然比没钱的快。

现在不限单双号了,大家一起冲到马路上。不管有钱的,没钱的,都堵在马路上。

骂爹的,骂娘的,都没用。速度一下回到解放前。现在100Mbps的速度,比之前的12Mbps速度还要慢。

如果要回到之前的通畅网络,要不就重新限行,要不就等待电信联通大发慈悲铺设更多的线路来增加带宽。

但问题是,没有收益,电信联通才不会大发慈悲呢!

所以,如果你要用真正的宽带,电信说可以给一条企业级的线路给你。前提是加钱。

看到没?想愉快的上网,请多付费。那么请问,电信联通所谓的免费升级带宽真的免费了吗?

傻瓜才会信,傻瓜才会高兴的起来。

在网上看到很多人都想用极路由F Q,但通常的方法都是先root,然后刷其他ROM,比如PandroraBox等。

但自从9005后,极路由ROM添加了防写uboot后,想刷第三方ROM变得及其不方便(虽然网上有刷低版本的uboot的方法,但刷uboot存在风险,刷坏了就砖了)。而且刷了第三方ROM后,极路由的所有功能都无法使用了。

其实极路由的ROM本身就是PandroraBox,我们只要在极路由ROM上安装我们需要的工具就可以了。最大的问题就是怎么打开路由器的SSH服务。

现在唯一的方法就是通过TTL连接。在淘宝买一条USB口的TTL线,如果家里没用电烙铁,也顺便淘一套回来。

买回来,首先把极路由通电,接上网线,通过http://192.168.199.1初始化极路由。并把极路由ROM在线升级到最新版本。并把自动升级ROM的功能关闭掉。(如果ROM升级了,下面的操作就要重新做一次了)

拆开极路由,看到电路板上有一排并列的“RX,TX,GND,3.3V”接口,找一些电话线,用电烙铁分别给RX,TX,GND烙上电线(网上有现成的教材,并且图文并茂,http://www.freebuf.com/news/47250.html)。

用TTL线的RX连极路由的TX,TTL线的TX连极路由的RX。TTL线的GND连极路由的GND线。

把TTL线通过USB接到电脑上,并安装驱动。通过windows的“设备管理器”查看这TTL线对应的com口(比如是com3)。

然后用超级终端工具(如putty,SecureCRT)连接COM3,波特率(baud rate)是115200,其他设置默认即可。

给极路由通电,就可以通过超级终端看到路由器的启动过程。

当启动完毕后(超级终端中没用新的内容显示)按一下键盘的回车键,就可以看到“root@Hiwifi:~#”字样。

在“root@Hiwifi:~#” 后输入如下两行命令

/etc/init.d/dropbear enable

/etc/init.d/dropbear start

稍等10秒钟后,路由器的SSH服务就打开了。
这时候就可以把路由器断电。把三根刚烙上去的电线做好绝缘后,就可以把极路由的电路板装回记录仪的铁盒子了。

重新启动极路由,通过SSH访问极路由。按照如下方法按照必要的软件,比如openvpn,shadowsocks,pdnsd等。

安装后配置的方法网上有很多,在这里就不说了。

##########################

mkdir /tmp/cproot
mount -o bind / /tmp/cproot
cp -a /tmp/cproot/* /tmp/data/
umount /tmp/cproot
echo ‘ls -l $1’ > /tmp/data/bin/ll
chmod 755 /tmp/data/bin/ll
rm /etc/opkg.conf
mv /etc/opkg.d/*.conf /tmp/data/root
echo ‘src/gz barrier_breaker http://downloads.openwrt.org.cn/PandoraBox/ralink/mt7620/packages
dest root /tmp/data
dest ram /tmp
lists_dir ext /tmp/data/var/opkg-lists
option overlay_root /overlay
option ssl_ca_path /etc/ca’ > /etc/opkg.conf
cd /etc/opkg.d/
ln -s ../opkg.conf opkg-fast.conf
ln -s ../opkg.conf opkg-fast-2.conf
ln -s ../opkg.conf opkg-fast-3.conf
ln -s ../opkg.conf opkg-secure.conf
ln -s ../opkg.conf opkg-secure-2.conf
opkg update
opkg install bind-dig
opkg install diffutils
opkg install fdisk
opkg install libcyassl
opkg install libffi
opkg install libjson
opkg install libmount
opkg install libncurses
opkg install libxml2
opkg install mtr
opkg install openssh-client
opkg install openssh-sftp-client
opkg install openssl-util
opkg install openvpn
opkg install openvpn-easy-rsa
opkg install pdnsd
opkg install python
opkg install tcpdump
opkg install wget
(上网下载shadowsocks-libev_1.6.1-1_ramips_24kec.tar.gz,或更新版本,并通过winscp上传到路由器的/tmp/data/root/)
cd /tmp/data/root/
mkdir shadowsocks
cd shadowsocks
tar zxf ../shadowsocks-libev_1.6.1-1_ramips_24kec.tar.gz
tar zxf data.tar.gz
cp -r etc/init.d/shadowsocks /etc/init.d/
cp -r etc/shadowsocks.json /etc/
cp -r usr/bin/* /tmp/data/usr/bin
cd /usr/bin/
ln -s /tmp/data/usr/bin/ss-local
ln -s /tmp/data/usr/bin/ss-redir
ln -s /tmp/data/usr/bin/ss-tunnel

##########################

 

买了一个极贰路由器,由于升级到了9005后的版本,uboot被保护了。

不能随意刷网上发布的众多自编译的openwrt版本的固件。否则就无法正常启动。

而且网上找到的一些救转固件也无法使用,我猜可能是这些救转固件只能用在9004或之前的uboot下吧。

但后来我从极路由的客服那里拿到了一个9003的救转固件,就可以成功的把我的9005(9006,9007)的极路由救回来。

固件的下载地址是(http://pan.baidu.com/s/1eQeU6VS)

刷固件的方法跟网上说的不太一样,用网上说的方法一直无法刷入。

(1)用大头针捅着极路由的reset按钮,然后接通极路由的电源;

(2)把电脑的IP改为固定IP (192.168.1.88/255.255.255.0 , 网关不用设置)

(3)解压固件包,在解压后的文件夹中运行tfpt服务器(tfpt32.exe或tftp64.exe , 请根据你的windows的版本来允许32位或64位版本)

(4)tftp软件会很快出现一个上传固件的进度条,等待100%后极路由会自动重启,并进入走马灯状态(就是路由前方的4个指示灯依次闪烁)

(5)当极路由走马灯跑完后,它会再次自动启动。这时把电脑的IP改为自动获取。很快就会重新获取到IP。

(6)打开http://192.168.199.1就可以设置极路由了。

我这个方法绝对可行,之前按照网上说的,先打开tftp服务器,再打开极路由的方法尝试多遍都无法成功。但把顺序改一下后就万试万灵。

在网上看到很多人说极路由好,终于忍不住手进了一个极二。

买回来才发现,只从2014年9月出厂的极路由(自带9005版)已经在uBoot中添加了防刷机的功能。

我自用TP-link 1043nd,刷了Openwrt。科学上网完全没有问题。本以为极二也可以刷openwrt,可以替换掉TP-link。

上网去找资料,下了9003和9004版本,打算降级后root。但发现无法降级,现状就是刷机后重启还是9005版。

找售后,售后给了一个tFTP版的9003给我。终于降级成功。还兴奋了一下。想不到刷入9003的root版还是失败了。

继续上网搜索资料,发现原来是防刷机的问题。虽然是降到了9003,但uBoot并没有降级,所以防刷机机制还生效。

只能通过TTL线来登录(登录后直接是root权限)。但手上并没有TTL线,只能放弃。

最终,我决定把这极二扔到一边去,继续使用我的TP-link了。

到此,我对极路由非常的失望。不是说是专门给Geek用户打造的吗?搞什么防刷机呢?!!!!!

有朋友用的是windows phone 8.1。需要在手机上翻墙。

我看了一下,windows phone 8.1 支持的是ipsec+ikev2。通过google,发现strongswan可以支持。

因此,就在linux中安装了一个strongswan。特此做一下笔记。

我是直接通过编译source包来安装了。编译时所用的参数是:

##############################

./configure –prefix=/usr/local/strongswan-5.2.0 –enable-eap-identity –enable-eap-md5 –enable-eap-mschapv2 –enable-eap-tls –enable-eap-ttls –enable-eap-peap –enable-eap-tnc –enable-eap-dynamic –enable-eap-radius –enable-xauth-eap –enable-xauth-pam –enable-dhcp –enable-openssl –enable-addrblock –enable-unity –enable-certexpire –enable-radattr –enable-tools –enable-openssl –disable-gmp –enable-charon

##############################

编译前,要先确保系统的python版本较新,否则编译strongswan时会出现错误。

成功后,strongswan会安装到/usr/local/strongswan-5.2.0下。

下一步,生成服务器所需要的数字证书(之前我自己通过openssl生成的证书无法在strongswan下使用,问题症状是windows phone不认我的证书,所以只能再生成一套证书给strongswan用。

(下面的内容,如果你要参考,记得把里面相关内容替换掉)

##############################

/usr/local/strongswan/sbin/ipsec pki –gen –type rsa –size 4096 –outform pem > vpnca.key
/usr/local/strongswan/sbin/ipsec pki –self –flag serverAuth –in vpnca.key –type rsa –digest sha1 –dn “C=CN, O=Jacky He Ltd., CN=jackyhe.com” –ca > vpnca.crt
/usr/local/strongswan/sbin/ipsec pki –gen –type rsa –size 4096 –outform pem > server.key.pem
/usr/local/strongswan/sbin/ipsec pki –pub –in server.key.pem –type rsa > server.key.csr
/usr/local/strongswan/sbin/ipsec pki –issue –cacert vpnca.crt –cakey vpnca.key –digest sha1 –dn “C=CN, O=Jacky He Ltd., CN=vpn.jackyhe.com” –san “vpn.jackyhe.com” –flag serverAuth –outform pem < server.key.csr > server.crt
/usr/local/openssl/bin/openssl rsa -in server.key.pem -out server.key -outform DER
cp vpnca.crt /usr/local/strongswan-5.2.0/etc/ipsec.d/cacerts
cp server.crt /usr/local/strongswan-5.2.0/etc/ipsec.d/certs
cp server.key /usr/local/strongswan-5.2.0/etc/ipsec.d/private

##############################

下一步,配置ipsec.conf

# vi /usr/local/strongswan-5.2.0/etc/ipsec.conf

(下面的配置的意思是,创建一个叫“windows-eap-mschapv2”的VPN连接,VPN的左边是服务器本身,右边是客户端。左边通过服务器的数字证书做验证,右边是通过eap-mschapv2方式验证。)

(left=<ServerIP>  : 记得改为自己服务器的public IP)

(leftsubnet=0.0.0.0/0 : 这里定义的是哪些IP段需要通过VPN访问。如果你只是想让VPN客户端访问你VPN服务器后面的某个网段的话,就把leftsubnet定义为那个网段的IP段。可定义多个网段,网段与网段间用逗号分隔)

(leftid :这里定义是服务器段的数字证书的标识,请改为你的数字证书一样的标识。)

(right=%any : 这里定义的是客户端的IP,如果是动态IP,就写%any,如果静态IP,就改为对应的IP)

(rightsourceip=10.0.8.0/24 : 这里定义的是分配给客户端的VPN IP段,系统会从10.0.8.1开始分配IP给客户端。)

(rightsendcert=never : 这里定义的是是否要求客户段提供合法的数字证书。因为strongswan VPN可以通过“用户名+密码”,“数字证书”,“数字证书+用户名+密码”三种验证方式。我这里是用“用户名+密码”方式,所以不需要用户提供合法数字证书。)

(eap_identity=%any : 意思是这个“windows-eap-mschapv2” 连接中,可以用来登录的用户名是什么。如果你想给所有用户登录,就用%any。如果想给某些用户登录,就在这里列出。用户名间用逗号分隔。)

##############################

config setup
# strictcrlpolicy=yes
# uniqueids = no

# Add connections here.

conn windows-eap-mschapv2
keyexchange=ikev2
ike=aes256-sha1-modp1024!
esp=aes256-sha1,aes128-sha1!
dpdaction=clear
dpddelay=300s
rekey=no
leftfirewall=yes
left=<ServerIP>
leftsubnet=0.0.0.0/0
leftauth=pubkey
leftcert=server.crt
leftid=”C=CN, O=Jacky He Ltd., CN=vpn.jackyhe.com”
right=%any
rightsourceip=10.0.8.0/24
rightauth=eap-mschapv2
rightsendcert=never
eap_identity=%any
auto=add
compress=yes

##############################

下一步,配置strongswan.conf

# vi /usr/local/strongswan-5.2.0/etc/strongswan.conf

(在这里,可以定义分配给用户的DNS)

##############################

charon {
dns1=8.8.8.8
dns2=8.8.4.4
ndns1=8.8.8.8
ndns2=8.8.4.4
load_modular = yes
plugins {
include strongswan.d/charon/*.conf
}
}

include strongswan.d/*.conf

##############################

下一步,配置strongswan.d/charon/eap-peap.conf

# vi /usr/local/strongswan-5.2.0/etc/strongswan.d/charon/eap-peap.conf

##############################

eap-peap {
load = yes
phase2_method = mschapv2
}

##############################

最后,配置验证信息

# vi /usr/loca/strongswan/etc/ipsec.secrets

(RSA 后面跟着是服务器段的私钥,这就是我们之前生成的,并放在/usr/local/strongswan-5.2.0/etc/ipsec.d/private下的server.key。)

(第二和第三行是定义VPN客户端的登录用户名和密码,第三行多了个“device name\”原因是我发现如果用windows phone 8.1 登录时,客户端发来的用户名是带有设备的机器名的。)

##############################

: RSA server.key

“username” : EAP “password”

“device name\username” : EAP “password”

##############################

到此,所有配置完成。

你可以通过/usr/local/strongswan-5.2.0/sbin/ipsec start 来启动。

如果你是通过iptables来做Linux防火墙的话,还需要做如下设置:

(下面假设你的服务器的网卡eth0是与Internet连接的那张网卡。其中记得让VPN的IP10.0.8.0/24通过你的eth0网卡,并FORWARD到其他地方。)

##############################

echo “1” > /proc/sys/net/ipv4/ip_forward

iptables -A INPUT -i eth0 -p udp -s $IP -m multiport –dport 500,4500 -j ACCEPT

iptables -A FORWARD -i eth0 -s 10.0.8.0/24 -j ACCEPT

##############################

自从09年开始使用systeminplace的VPS来FQ后,一直都使用的很正常。但在10年kernel被升级后。VPS的路由功能就突然失效了。
通过检查发现,问题不在VPN上,因为PPTP可以正常建立连接。通过tcpdump抓包发现,VPN客户端的请求已经从VPS的Internet口转发出去了。但却没有任何的数据包返回。如果从对端的服务器上也做tcpdump,发现数据包已经到了对端服务器,但不知道为什么,对端服务器直接把数据库丢弃。并没有返回数据。问题好像十分诡异。
与systeminplace的support team讨论得知,他们的新kernel并没有把所有的iptables功能编译进去,比如mangle表就没有被编译进去。导致数据包虽然被SNAT并转发出去了,但由于没有managle表帮忙更新数据包的checksum。所以被对端服务器当成非法数据包而丢弃(他们的原话:the reason why this happens is because the NAT target mangles the IP header as it should, but does not update the checksum. normally, this is fine because the NIC driver will recalculate the checksum, but instead it gets summarily rejected by the firewall and never makes it to the router as xen’s netback does not support checksum offloading obviously.)。
得知这个结果后,开始以为没有救了,只能换VPN的Vendor了(systemplace的support team一直强调,他们不支持关于VPN的support,我猜是因为很多像我这样的人买了他们的VPS做FQ工具了。他们不胜其烦,就只能通过kernel限制路由使用减少我们这些用户量了)。但昨天百无聊赖时,翻查了他们的资料库(Library),虽然只有4篇文章,但里面却找到了一个很重要的资料。就是《Using PV-GRUB with CentOS and RapidXen (to use CentOS official kernels)》。这文章介绍怎么可以使用CentOS自带的Kernel,而不是他们提供的Kernel。这个非常的重要,因为本来问题就在他们编译的kernel上。如果使用CentOS的官方Kernel,那么所有限制就可以解决了。
按照他们的资料介绍,方法十分简单。
(1) 先通过 yum升级所有补丁包和安装grub(这是为了能够通过yum安装kernel后没有兼容性问题)
yum update
yum grub

(2) 安装CentOS的kernel for xen
yum –enablerepo=centosplus install kernel-xen

(3) 重新编译启动镜像,让它可以预装载(preload)jfs和xenblk两个模块。这里必须要注意了,由于时间不同,我们在(2)中安装的kernel-xen的版本号也不同,所以下面的命令中的kernel版本号(2.6.18-194.11.3.el5.centos.plusxen)要改为我们刚刚安装的kernel的版本号才行。
/sbin/mkinitrd -f –preload jfs –preload xenblk /boot/initrd-2.6.18-194.11.3.el5.centos.plusxen.img 2.6.18-194.11.3.el5.centos.plusxen

(4) 添加一个新文件(/boot/grub/menu.lst),内容如下:(系统本来是没有/boot/grub这个目录的,因此要先通过mkdir /boot/grub创建。并且kernel的版本号也要改成相应的内容,就如(3)一样)
#############################
timeout 5

title           CentOS 5, kernel 2.6.18-194.11.3.el5.centos.plusxen
root            (hd0)
kernel          /boot/vmlinuz-2.6.18-194.11.3.el5.centos.plusxen root=/dev/xvda1 ro quiet
initrd          /boot/initrd-2.6.18-194.11.3.el5.centos.plusxen.img
#############################

(5)  给刚才生成的文件建立一个软链接到/boot/grub/grub.conf
ln -sf /boot/grub/menu.lst /boot/grub/grub.conf

(6)通过下面的命令,检查上面的操作是否成功(如果成功,系统会显示/boot/vmlinuz-2.6.18-194.11.3.el5.centos.plusxen)
grubby –default-kernel

(7) 登录到systeminplace的后台,选择my server –〉manage –> advance settings –> PV-GRUB,并点击change kernel profile。 (请注意,PV-GRUB是分32bit和64bit的。请根据你们的VPS的CentOS的版本自己选择。如果不知道自己的OS是32bit还是64bit,可以登录到系统,并输入uname –all,如果得到的结果有i686,就是32bit的,如果是x86_64,就是64bit的了)。

(8) 选择my server –〉manage –> advance settings –〉dashboard , 选择Stop,再选择Start重启VPS。 (请不要再OS中输入reboot重启VPS,没有用的,系统还是会启动之前的Kernel)。

当启动完毕后,输入uname –all 就可以看到系统已经使用我们自己的Kernel了。这时候你会发现,路由的功能又回来了。启动openvpn也不会出错了。