使OpenWRT支持河南联通特殊拨号

近日购RG100A若干,其中一台带回老家测试ADSL modem功能拨号上网,使用的是guzhifeng制作的固件

modem部分按照说明设定还算比较顺利,vpi/vci通过网线直连现有的猫进入管理界面找到,我家所在地区为8/81。注意设置后执行的是/etc/init.d/modem boot,而非start,因为猫需要先初始化硬件(需要将闭源的近500K的电话线信号软调制代码以二进制shellcode的方式映射到内存中然后交给brcm6358的另外一个核心执行),而后才是ADSL拨号服务。

河南联通的主要难点是对pppoe用户名进行了加密处理,更要命的是加密后的字符串中故意含有\r\n这个换行符,具体可见以前的这篇文章。OpenWRT中网络配置是通过UCI脚本界面读取/etc/config/network配置文件来进行的,经测试,直接在配置文件中填写为’3:\r\n***’,或者填写为$’3:\r\n***’这样的linux shell转义均无法正确识别,logread显示用户名错误。

考虑到pppoe拨号实际上是执行pppd,用户名与密码通过命令行传参,若假设shell仅通过空格和制表符分隔参数,则可以尝试对pppoe的uci脚本做patch。编辑/lib/network/ppp.sh,在从配置文件读取用户名之后添加username=`echo -e $username`,即可借助echo命令对原字符串转义。如图所示。

CNC_OpenWRT_20140804220405

之后即可在/etc/config/network中直接以3:\r\n***的形式填写用户名,经实验验证可以正确拨号上网。

 

使用LMDE MATE作为工作站长期系统

死理性派通常并发很严重的选择障碍症,而且我这样的可以称得上病危的程度。因为理性无法控制选择矩阵中各个参数的量化,使得绝对理性无法存在。

Linux发行版上,最早接触的是Ubuntu,后来建站用到了Debian,所以就对DEB系产生了路径依赖而对RPM系无感。然而Ubuntu的问题是从11年换成了Unity这个坑爹的桌面,以及添加了各种乱七八糟的商业软件,最终让我转投简洁的Debian,花各种功夫从最基础的系统一点点添加软件包,再一点点做美化,结果最后还是在某次更新后华丽丽地坏掉了——Debian稳定版真的不适合当桌面,不稳定版又真的是不稳定。

后来又陆续实验了openSUSE以及国产的Deepin,还有Linux Mint 17 Cinnamon,都不是完全符合我这个完美主义挑剔的口味。比如openSUSE太过严谨,许多non-free的软件都在packman里;Deepin就不多说了,见上篇文章的吐槽;Mint 17其实用起来很好了,只是Cinnamon在虚拟机里稍稍表现有点差,桌面背景以及窗口边框的阴影在VirtualBox的无缝模式中有bug。

我的一贯艺术品味是简洁+完美,一个东西要尽可能做得规模精简,但是不会因为大小的精简而丧失质量。难道真的找不到一个像Debian那样的简约、又能像Ubuntu那样(相对)稳定易用的系统吗?Mint其实非常接近这个答案,尤其是Mint MATE。想到LMDE宣称的是滚动更新,不用忍受半年后就要重装系统之苦(新消息据说Mint 17之后只以Ubuntu LTS作为基础,也就是可能两年后才会换系统),故决定尝试Linux Mint Debian Edition MATE。

Live DVD安装过程中稍有一些痛苦,主要是一些Known issues。在VirtualBox中遇到有Known issues页面中提到的GTK主题无法正常加载的问题,而且这个问题会导致Caja死循环,又因为LMDE默认使用486内核,只能用单核,所以在虚拟机中基本上是卡死,安装也要比Ubuntu系慢上一倍左右。

安装之后就好得多,MATE桌面的窗口可以和VirtualBox无缝模式完美兼容,在Windows宿主下操作Linux中的命令行十分方便。并且LMDE不像Mint那样有个语言包管理,只会安装一种语言,而Mint会把各种区域的英语和汉语都给装上几十个,并且系统语言与日期、货币语言经常会出现混乱。单语言下中文支持很好。之后需要做以下一些事情:

1、更换源。请注意与Mint不同,Mint的基础源就是Ubuntu的官方源,但LMDE的基础源并不是官方的Debian Testing,而是由Mint自己派生出来维护的一个仓库,这个仓库滚动得要比Debian源要慢,会更稳定,所以不建议把LMDE的Debian源换成国内的Debian Testing,否则在Debian发布新版本、Testing解除冻结时可能要杯具。死过一次的人表示再也不相信Debian的滚动更新了。

LMDE的Debian源目前在国内没有镜像,经过测试,我这里访问最快的是日本北陆尖端大的镜像(http://ftp.jaist.ac.jp/pub/Linux/linuxmint/debian/latest/)。Mint源可以选用中科大的镜像(http://mirrors.ustc.edu.cn/linuxmint/packages)。

2、系统滚到最新:
apt-get update
apt-get upgrade

3、换成686内核。表示单核都是上个世纪的事情了:
apt-get install linux-image-686-pae linux-headers-686-pae

4、安装Fcitx输入法:
apt-get install fcitx fcitx-googlepinyin fcitx-ui-classical fcitx-frontend-gtk3 fcitx-config-gtk2
其中有些包分gtk、gtk2、gtk3,按个人对界面的喜好选择吧。

如果需要,还可以安装Mint的输入法设置工具im-config,同时依赖zenity。

5、没有了!真的没有了!内置的LibreOffice、VLC Player等软件都工作得非常好,一贯难看的Debian桌面也由Mint做好了美化。比起手动配置Debian长达数页的流程文,不得不说Mint确实做的很好,真正做到了开箱可用,不愧这几年一直保持全球排名第一的位置。

笔者建议Linux初学者可以尝试下Mint或者LMDE。喜欢好看的可以选Cinnamon桌面,有透明效果、可以安装第三方的主题;喜欢简约的选用MATE桌面,提供Gnome2的体验,使用上也非常接近Windows。

最后上VirtualBox无缝模式的图。请听题:图中笔者写这篇文章使用的Chrome是运行在Linux中还是Windows中?

LMDE_VirtualBox_20140711010348

参考文章:成熟之美:LMDE 201403 MATE上手实测

安装openSUSE记录

opensuse是个好系统。先上图。

抓图1

其实是去年调教的debian在某次apt-get upgrade后gnome shell坏掉了,所以说unstable果然名副其实。后来一直用的ubuntu,然后今年实在忍受不了虚拟机ubuntu的unity桌面的速度了,特效还TM不能关,偶然尝试装了kubuntu-desktop,发现kde4还是蛮有意思的,界面和gnome3一样好看,而且耦合性较好,不像gnome那么零碎到各种打补丁。

kde的最好的发行版是opensuse,原因是都是德国人弄的,甚至是相同一群开发者,就装了试试,感觉还不错。个人感觉优点如下:

1、yast不简单是个包管理系统,而是译作“控制中心”,相当于windows的控制面板的作用,即suse拥有一个系统的图形化接口来对操作系统进行任何的配置,而不像其他发行版那样是通过一些gnome的软件拼凑起来。另外suse的安装向导的背后就是yast。
2、软件仓库齐全,且很巧妙地通过分离一个packman仓库出来而规避了一切版权问题。
3、和kde的同步率很高(gnome版我没试用),安装后不需要做任何的trick就非常好看,配色、字体什么的都很好。
4、自带驱动多,包括virtualbox的驱动,就是不用再装vboxlinuxadditions了。

总结起来,openSUSE是和Ubuntu、Fedora并列的,适合桌面用户的傻瓜系统,并且其独有的yast使其比后两者更胜一筹。

安装需要注意一点,就是使用LiveCD安装完后是没有得到完整的系统的,首次运行yast时会自动从网上下载几百M的包装上。另外LiveCD装好后是英语的,需要自己装各种中文翻译包,弄不好汉化的就不完整。所以建议一开始就使用DVD或网络安装。笔者使用的是网络安装。

下载openSUSE-13.1-NET-i586.iso加载到虚拟机里,在grub引导界面需要注意下面的提示,需要在这个界面按F2设置语言,按F4设置安装源。安装源设置的机会只有这里,否则装的时候会从官网的mirror拖,速度就呵呵呵了。笔者使用的是阿里云的源:http://mirrors.aliyun.com/opensuse/distribution/13.1/repo/oss/。

后续图形化界面的安装向导基本不需改动,有其它linux发行版安装、分区经验的话没有任何问题。桌面环境选了kde。grub安装位置笔者选择了根分区而不是mbr,因为这个虽然是虚拟机,但实际上映射的是真机上的一个分区,而mbr是virtualbox的一个虚拟的文件,并且以前的经验表示这个虚拟的mbr无法正确引导。

安装完成进系统后软件仓库并不会自动修改为国内地址,需要手动在yast里修改一次。全程是有图形界面的。另外还要添加packman的仓库,阿里云的地址是http://mirrors.aliyun.com/packman/13.1/。

然后就可以安装自己喜欢的一些软件了,笔者一般是先装个smplayer测试视频,不过virtualbox的兼容性似乎不太好,渲染是会黑屏的说。安装软件可以直接在yast图形界面里搜索,也可以使用zypper install命令。zypper相当于debian系的apt-get与redhat系的yum。

真机启动可以借助grub4dos,注意suse并不像ubuntu那样在根目录下符号链接vmlinuz与initrd,正确的引用是在/boot目录下:
root (hd1,2)  #使用usb启动grub4dos后本机硬盘为hd1,我的linux分区在分区表里是第三个slot
kernel /boot/vmlinuz
initrd /boot/initrd
boot

希望这次系统的部署能够坚持长久一段时间。

Debian jessie/sid 详细安装配置记录 2013年5月

前置博文:VirtualBox安装Debian记录 2010-12-27

此Po由坑爹的Drivel软件编写,该软件不支持所见即所得编辑,我表示手写HTML是个非常不习惯的事情。。。另外功能上也是比LiveWriter少了太多,比如说,谁能告诉我怎么上传图片 = =

在线补图:

一、前言:选择发行版的纠结

本人非linux工作者,装linux只是为了玩和折腾,目前技术水平仅限于装系统、简单配置web服务器,对linux内部机制几乎一无所知。

首先是自己的一些flavor,说成偏执也不为过。由于N年前买的用于建站与哗——的美国vps只有128m内存,所以查了查各种linux发行版的资源占用比较,就选择了安装debian 5.0系统。那个时候由于acm比赛在东华举行,已经稍微接触过ubuntu,但还并不知道debian与ubuntu的渊源。这个时候在得知ubuntu基于debian时会有种亲切感(设想你买了个debian牌手机,装了apt软件市场,然后你发现你的好朋友一直用的ubuntu牌手机也装的是apt软件市场)。

关于debian的ubuntu的选择。10年买台式机时装了debian 6.0,唯一的印象是太难用。只要是在google上搜索过debian和ubuntu区别的同学肯定会被带到这篇帖子里,这篇帖子之所以成为神贴排到google的首页大概是因为16楼的关系,这个16楼的比喻决定了几乎所有的国人linux用户对ubuntu与debian的印象,所以微博上流行的各发行版比喻图比较就将ubuntu和debian画成了非常kawai的岛国动漫形象。

debian难用正如神贴中比喻的“纯情少女”,装好后你会发现她除了当服务器什么都不能干。“诶中文字体是啥”,“诶输入法是啥”,“诶gnome怎么这么难看啊”,“诶ntfs分区怎么不能写”,“诶桌面里挂载分区怎么显示权限不够”。。。所以一般来说ubuntu是喜欢apt包管理方式的最好入门。但是!!!为嘛11年以后你要自己开发个四不像的unity桌面啊!我知道你会说gnome2太难看,但是你不要抛弃几十年来的gnome用户啊亲。。。另外一个原因就是ubuntu桌面版软件太多太杂,有许多不喜欢的。虽然可以卸载,终归觉得麻烦了点,尤其是要卸unity的时候。而debian就提供了“基础系统”的概念,稍微了解我的同学应该知道,我有很严重的精简事物强迫症,可能是和小时候用的硬盘是1G的有关。

事实上,在ubuntu的易用与debian的纯净之间的纠结最终导致我来回格式化一个分区翻来覆去地安装了10遍,最终才总算配置好了一个系统,或许用“调教debian”更合适,但是鉴于“调教”会被google搜索过滤掉,文章标题还是叫配置好了。

选择unstable(sid)是因为重新了解了下debian的版本哲学,了解到debian的stable大概要落后一两年,testing也会落后,就算是unstable其实也是落后的,因为还有更新的experimental。因为是桌面系统使用,所以并不担心稳定性问题,选择sid是可以的。服务器的话一定要用stable。

最后,请允许我感谢gnome3的发明。由于gnome2太丑,连linus同学都投奔kde了,连debian本来也打算在7.0中改用kde。后来gnome3变的很漂亮,基本能和windows和mac媲美,linus同学就宣布他返回gnome了,而刚刚发布的debian7.0也搭载了gnome3作为默认桌面。谢天谢地我不用再郁闷当年那傻乎乎的gnome2了。

二、基本系统安装

下载最新的jessie/sid的daily build网络安装版iso

http://cdimage.debian.org/cdimage/daily-builds/sid_d-i/arch-latest/i386/iso-cd/

以及相应的u盘安装loader

http://ftp.nl.debian.org/debian/dists/sid/main/installer-i386/current/images/hd-media/

将vmlinuz、initrd和iso文件放入U盘,并在menu.lst中添加启动项(U盘常备grub4dos)。这点不太多说,有关grub4dos在u盘上的安装以及一代grub的使用请自行google。

安装语言选英文,debian不像ubuntu那样有中文字体,选中文的话需要自行对装好之后对着方块欲哭无泪的情况负责(这些都是我自己血淋淋的教训)。但是区域就不用选美国了,选other后再选亚洲、中国。

然后好像是蹦出了一些realtek的驱动并没有编译进去的提示,不管他,反正哥也算用了这么多年linux了,从来没听谁说没驱动不能用的。

选择网络。由于这一次安装的时候校园网其卡无比,连个apt update都要10分钟,所以我把网线拔了,先装基本系统,装好以后再设置apt。

root密码留空以禁用root帐号。如果安装时就开启了root帐号,则不会安装sudo,也不会赋予正常用户提权的权限,以后会死人的。

分区不多说,自己小心,慢点操作,确认的时候多检查几次,别手滑把整个硬盘废了。

为了得到最纯净的系统,选择组件的时候我把那个什么基本系统工具也给取消了。查了下这个包里面是有ftp、w3m这样的工具,想用的时候再装也不迟。这样直接结束安装硬盘应该只用掉500m。重启登陆。

设置root密码:sudo passwd root,然后su到root。

设置网络。插上网线,编辑/etc/network/interfaces。注意如果用vi的话这时候的vi是thin-vi,还不是vim,不支持退格键。将网卡设置为dhcp,然后重启网络:/etc/init.d/networking restart,此时就可以ping通了。

auto eth0

iface eth0 inet dhcp

设置apt。编辑/etc/apt/sources.list,添加软件包源:deb http://ftp.cn.debian.org/debian/ sid main contrib non-free,保存,然后apt-get update。

依据官方说明,daily build的iso好像并不区分发行版本,所以要做一次apt-get dist-upgrade把系统和仓库统一。好像会升级内核,这样的话就先重启一下吧。

三、安装桌面环境

桌面当然选择我觉得比较好看的gnome3咯,当然gdm也要装,因为startx和gdm的启动是有很大区别的,startx启动的桌面是没法获取sudo权限的,任何的系统操作如挂载分区都无法进行。apt-get install xorg gdm3 gnome-shell。x-window-system改名叫xorg了的说。。。半个小时的下载安装时间,去喝杯茶吧。

安装字体。apt-get install xfonts-intl-chinese xfonts-wqy ttf-droid ttf-wqy-*,这几个字体一般应用足够,需要更多字体可以以后去windows目录下拷盗版的。

添加中文区域。dpkg-reconfigure locales,选上zh_CN.UTF-8,但还是以en_US为默认区域,主要是因为字符界面的控制台是没法显示中文的。

接下来就可以重启进桌面了,以后的工作在桌面下通过sudo apt-get进行。下面是一些基础的软件:

gnome-shell-extensions:默认的一些桌面扩展

gnome-tweak-tool:tweak工具,不解释

gnome-screensaver:好像不装这个就没法锁屏

network-manager-gnome:gnome管理网络的

network-manager-pptp-gnome:上面的pptp vpn支持

vim:不解释

ssh:不解释

iceweasel:我一直不能理解debian的那群黑客们因为个firefox商标的问题就和mozilla闹翻

flashplugin-nonfree:上面的flash插件

ntp:自动对时

gedit:不解释

file-roller:gnome默认的压缩包查看软件

alsa-utils

gnome-session-canberra

freedesktop-sound-theme:这几个是和声音有关的,开始我的系统能出声,但是gnome调节音量啊,输入提示啊都没有声音,google一下有说装这几个包的,结果也没好,但重启后就莫名其妙好了,写在这里待议。

fcitx:传说中最nb的中文输入法框架。开始我用的ibus,直到用上了pidgin的gnome-shell插件,发现ibus没有gnome-shell的很好的前端(gnome-shell是在gtk之上的一个层,如果是在gnome-shell里输入中文,那么使用gtk前端的输入法选字窗口就会被挡住)

fcitx-googlepinyin:google拼音

fcitx-module-cloudpinyin:传说中很nb的云模块

四、配置与美化

用debian首先会发现触摸板怎么没法单击双击的说,这个不是bug,在系统设置中鼠标与触摸板设置中,有个enable mouse clicks with touchpad。

打开gnome tweak tool,一项项看,如desktop中可以设置桌面上放不放图标,files设置文件浏览器的要不要显示地址栏,shell设置窗口标题栏有没有最大化最小化按钮、以及笔记本合上盖子的操作(这个设置明明应该放到电源管理里的,莫名其妙的说)。

主要是fonts栏,刚才虽然安装了字体,但是没有设为系统默认,并不好看,并且看上去很大。这里把default font和document font都设为droid sans 11,window title设为droid sans bold 11,等宽设为droid sans mono 11。hinting和antialiasing两个是设置clear type,我个人设为full和rgba看着比较舒服。

弄主题一般要安装两个渲染引擎,分别是gtk3-engines-unico和gtk2-engines-murrine,本着linux功能分散原则,gnome的主题分为shell主题(需启用shell主题扩展)、窗口主题、gtk主题和图标主题等,一般gtk主题和窗口主题因为美术上依赖,所以一起发布,而shell主题和图标主题是另外发布的。图标主题我喜欢ppa:tiheum/equinox里的faience主题包、faience-azur主题,gtk主题目前用的是ppa:satyajit-happy/themes的ambiance blue,shell主题用的是satyajit的dark shine。搜索以上ppa可以找到ubuntu的ppa官网,可以在包列表页面中点击详细信息,然后手动下载deb安装包通过dpkg -i安装。satya同学的主题介绍与预览可以在satya164.deviantart.com找到。因为这坑爹的drivel没法上传图片,今天就不发最终效果了。

关于拷贝windows的盗版字体,直接拷贝到~/.fonts目录中即可,无需打开字体文件点安装。

前面提到的gnome-shell输入法前端,打开https://extensions.gnome.org/,输入kimpanel即可找到,安装之。当然许多扩展都蛮好的,如天气啊什么的。

目前纸上就记录了这么多,以后有想到的再补充。

五、常用软件、pidgin

首先是看视频的,个人测试表明smplayer最好。听音乐的我不常用,暂时装的ubuntu上有的rhythmbox。文档的libreoffice装着玩,virtualbox装上(特殊情况下跑另外个分区的windows,但是不推荐)。wine和winetricks以后慢慢研究。下面说下im软件。empathy和gnome-shell结合比较好,但是它很奇怪,xmpp协议的微博和校内就是登不上去,目测是bug。所以还是用pidgin了。简单说下,微博的域是xmpp.weibo.com,用户名就是登录名,如果其中有@字符要写成\40。校内的域是talk.renren.com,用户名是校内id。其他设置如5222端口都是默认的。

麻花疼的im是个比较头疼的东西,他的理念就是打死不开放接口,打死用自己的协议,并且频繁修改,并且一发现用户使用奇怪的客户端立即封号不解释。这个倒也怪不得他,90年代web技术还不给力,写client软件的为了统治用户都是这德行,包括我自己。目前经过测试以pidgin-lwqq最好,基于webqq协议的思路很好(无需做逆向),作者很勤奋,一直没有停止开发,项目地址github.com/xiehuc/pidgin-lwqq。项目页面上还送了个gnome-shell-extension-pidgin的介绍,非常时髦。

折腾这么多天终于有了个属于自己的linux了,也算完成了几年来的一个历史遗留问题——以后再也不怕娶了debian当老婆结果调教不好了~~~因人类记忆力有限,整理以上详细安装文档,供后人参考。

Liang Xiaofei / 2013.5.18

抽风的路由器

昨天回来路由器挂了,频繁的出现wifi挂掉、死机、自动重启等情况。系统设置方面折腾半天无果(事实上就没能进几次设置,22端口一连就重启)。推测是RAM或者ROM哪块出了点小毛病。

于是只能进安全模式复位系统。但是依旧不稳定,估计是复位影响不到的ROM有毛病。

考虑重新刷。恩。经过几次刷机,终于不会抽风死机了。恩。找出以前的配置手记一点点弄——装ip、macvlan软件包啊,建虚拟网卡啊,拷贝以前写的拨号程序啊,新建一个interface加入防火墙的wan区域啊。我确信所有的步骤都和以前一样,但是——

路由器上了网电脑上不了。。。电脑ping外网显示Destination port unreachable。这个应该是和路由与防火墙相关,处理办法一般是检查下防火墙设置,或者就是简单地重启一下防火墙就可以了。

但是我的防火墙设置真的没有错。。。真的真的保证和以前一样。。。哪怕我把所有的设置都改为accept还是不行。。。

开始怀疑会不会是其他的地方出了问题,比如macvlan啊什么的。就关了虚拟网卡,改掉eth0.1的mac地址直接在这上面拨号,没用。后来索性刷了压根没有macvlan的2.4内核系统,还是没用。(如果是单拨,个人非常建议使用2.4内核的系统,这个系统的无线驱动用的是wl,很稳定,如果是2.6的就会时不时当cpu有点负荷时就挂掉。我当时用2.6是因为考虑到是不是要将寝室所有人的帐号都要来做带宽叠加,后来证明还是各用各的比较好,他们平时就用网线通过我路由器的交换机模块连外网,该怎么802.1x还怎么802.1x,用手机或者没钱了的紧急情况用下我的。)

已经知道是防火墙抽风,索性把防火墙关了。这个时候电脑ping外网会超时——很简单,无论是Windows还是Linux下,防火墙和NAT都是在一起的,Windows是ipsec,linux是iptables。

实在没招了,我想他既然这么抽风,我自己做一下NAT总可以了吧。上网搜了下iptables做NAT的简单用法。发现不考虑太多的话一句话就可以了:

iptables -t nat -A POSTROUTING -j MASQUERADE

打了进去,居然治好了。

那么就把这句话放到rc.local里开机自动运行,然后禁用自带防火墙组件的开机启动。

下面总结一下这次配置的整体步骤。

1、使用10.03.1的2.4内核固件。设置root密码(因为这次要关闭默认的防火墙,机器会暴露在外网,所以安全考虑一下吧)

2、修改wan接口(eth0.1网卡)的设置为静态IP(这样就不会有后台驻留的udhcpc。学校的802.1x设备在收到重复的dhcp请求会踢掉连接。这之后貌似udhcpc不会自动结束,如果不重启的话记得kill掉那个udhcpc)。设置mac地址为电脑有线网卡的mac地址以通过802.1x。(不用担心mac地址重复,wan与lan在物理上是隔离的)

3、禁用firewall组件的开启启动,将开启NAT的命令写入rc.local中。

4、复制拨号程序到/sbin。拨号。当然,最好是先重启一下。

本来是应该去探讨下自带防火墙抽风的原因的,但是毕竟对linux与网络了解还是有很多欠缺,iptables命令完全不会用,现在又是准备音乐会的关键时期,没时间和精力再折腾了。まあまあ、能上网就知足了吧,全校几千用校园网的群众都还在苦逼地拖着网线呢。。何况这次修好也不用担心wifi挂掉了。。

WRT54G的河南联通PPPoE拨号设置手记

由于实在忍受不了家里无线路由的丢包率,抱着赌博的心态在TB上淘了个WRT54G V4。WRT54G这款路由器不用多做介绍,一代经典,堪称“机王”,尤其是V2到V4版本。此机早在07年就已停产,但远远不能满足人们对cisco一代经典的追求,于是万能的天朝商人便打起了山寨的主意,之所以说是赌博便因为目前TB上WRT54G与WRT54GS买到山寨的概率远远高于买到二手真货的概率。我本来就赌它是个假的,只要比我现在用的无线好并且能编程折腾就行,来了就拆机看电路板,结果居然是真货!并且是WRT54G-CN V4的大陆行货!!!恩,恭喜我中奖。。。

因为用不上太多功能,所以目前不急着刷系统。先弄上网再说。。。

结果我悲催地发现我把宽带的密码忘了!而且我爸妈都忘了!

不过这个难不倒,旧的Tenda路由器里记录的有,恩,用Firefox的Inspect Element功能看一般密码毫无压力的说,于是我拿到了一个6位的数字密码。

然后我发现linksys拨不上号!提示pppoe验证失败!我一度以为是tenda记录的不对,比如说只显示了前6位等等。于是这两天就先用两层路由,tenda拨号,linksys的wan接到tenda的lan上,因为tenda只是无线丢包,有线还没怎么坏。

今天我爸找到了用纸记录的密码,居然就是我两天前试的那个!!!我倒!!!

LZ已死,有事烧纸。。。

==============华丽丽的分割线================

天朝互联网寓言故事之小鬼大战路由器拨号

第一回合:躺枪阶段

若干次试验后,linksys依旧无法拨号,而插到tenda上立即就能拨上,所以可以否定是刚下线不能立即拨的看法。为了验证是不是isp做了mac地址绑定之类的动作,直接用电脑接猫,新建pppoe连接,输入帐号和密码,结果失败,提示用户名或密码错误。于是推断isp做了mac地址绑定。

如果判断为MAC地址绑定,那么很简单,修改电脑网卡(本机拨号情况)或路由器wan的mac地址即可。于是将linksys的mac地址修改为tenda的,失败!将电脑网卡的mac地址修改为tenda的,失败!将tenda的mac地址修改为linksys的,成功??!!!

也就是说isp并没有检测mac地址。那怎么tenda怎么弄都能上,其它设备怎么弄都弄不上。难道拨号时还有其他方法可能判断客户端设备?于是我翻了遍ppp协议,似乎并没有什么新的发现,并且最最重要的是,网络上讲,识别设备的唯一办法就是mac地址。

我艹!!!!!!这不科学!!!!!!!!!!!!!!!!!!!!

到了这个时候,问题的诡异性已经超出了人类的智商。

不信?让我们把思路整理一下:

条件一,密码真的真的真的真的真的是对的。

条件二,tenda能拨上linksys和电脑拨不上,设置上没有任何纰漏。

条件三,isp并没有通过绑定mac地址来限制拨号设备。

苍天啊,大地啊,这三个条件真的真的是无解啊!!!!!!!!!!!

小鬼给跪了。。。。。。。。。

 

第二回合:逆袭阶段

正在一筹莫展之际,我想起了前些天被豆子叫去给某妹纸装电脑的一个细节。

当时是我配置的tp的路由器,等了半天也没拨上号,后来又突然好了。我点开了路由器的日志记录,看到一共拨了3次好像,前两次都是用户名密码认证失败,最后一次成功了。

妹纸家是网通,也就是现在的新联通。而我用网通也有十二年的历史了,我知道河南网通一直用的自己的拨号客户端,从原来的dhcp+到后来的pppoe。我也听说网通的拨号客户端对用户的帐号和密码有一些加密处理。

失败了两次之后才成功,我当时以为是isp意识到用户在使用直接的拨号,所以最后就给放行了。现在看来是我太天真了。这应该是tp在拨号失败后主动尝试了针对isp的拨号客户端,如电信的星空极速,亦或河南网通的racer这些定制的特殊拨号方式,tp的手动拨号配置中是有这个选项的。

那么同是国产的tenda是不是也在固件里内置了河南联通的特殊处理,只不过它也是自动尝试,在设置界面上并不体现出来。想到这点,问题终于有了转机。

stfw得知,河南网通客户端将用户名进行了加密处理,用加密的用户名与未加密的密码进行拨号。有人通过对racer软件的反汇编得出了加密算法并写出了计算拨号用真实用户名的软件,但新联通成立时对客户端进行了升级,结束了dhcp+的时代并更新了加密算法,目前这个算法还没人做现成的软件出来。

下载河南联通356版客户端安装,拨号,成功!

下面就可以考虑找到真正的用户名填入linksys的设置里,目前推荐的做法是打开windows的事件查看器查看RemoteAccess来源的事件。

image

等等。。。3冒号后面是个嘛。。。。。。。。。。what the fxxing。。。

是的,您没有看错,356版河南联通算法即3冒号开头的用户名,表示第三版算法,在用户名中加了个回车符让您没法填到路由器的设置里。这里的用户名实际上是3:\r\n5q3F9zN6lF4。这个回车符遵循的是windows的crlf习惯。

不过没法填到路由器的设置页面里可不一定代表路由器就不支持这玩意,直觉告诉我我可以使用HTTP封包工具将这个回车直接post到路由器的设置页面。打开HTTPAnalyzer,截一个linksys设置的包,然后将post的用户名字段手动改为3:%0D%0A5q3F9zN6lF4,发送。

试着让linksys拨号,成功获取了ip地址!此时是西元2012年7月25日19时12分。经过三个小时的折腾,某小鬼终于成功让“机王”上上了网。

截图一张。注意那里其实是有个\r\n的,看源代码可以看到。

image

 

后记:

这则寓言告诉我们两个道理。

一、河南网通被评为全国最差isp(没有之一)是正确的,科学的,名符其实的。

二、没有在中国的互联网江湖上混过十年八年的,不要买WRT54G之类的传说中的古董神机来装逼,上不了网坑死你个XX的。

(总结)重排文章与评论ID

20141118:当前博主使用的WP版本在wp-config.php中关掉Revision后依旧会在修改旧文章时出现由于Autosave导致的Rev,这部分需要手动删除。

本文适用于受不了ID跳号的重度强迫症患者,用以将文章和评论的ID完全从1开始排序。

警告:重排文章ID会导致搜索引擎索引完全失效,下面虽然会介绍一个跳转方法,但依旧非常不建议进行这个操作!

重排文章ID:

create table post_map(id int auto_increment primary key, oldid int unique key);
insert into post_map(oldid) select id from wp_posts order by id asc;
update wp_posts set id = (select id from post_map where oldid = id);
update wp_comments set comment_post_id = (select id from post_map where oldid = comment_post_id);
update wp_postmeta set post_id = (select id from post_map where oldid = post_id);
update wp_term_relatioships set object_id = (select id from post_map where oldid = object_id) where term_taxonomy_id in (select term_taxonomy_id from wp_term_taxonomy where taxonomy != 'link_category');

评论重排:

create table comment_map (id int auto_increment primary key, oldid int unique key);
insert into comment_map (oldid) select comment_id from wp_comments order by comment_id asc;
update wp_comments set comment_id = (select id from comment_map where oldid = comment_id);
update wp_comments set comment_parent = (select id from comment_map where oldid = comment_parent) where exists (select id from comment_map where oldid = comment_parent);
update wp_commentmeta set comment_id = (select id from comment_map where oldid = comment_id) where exists (select id from comment_map where oldid = comment_parent);

对于搜索引擎的失效,可以在旧ID有、新ID没有的情况下做跳转,但对于新旧不同的只好任由文不对题,可以在文章里加行字“如果你发现文章不对,点击访问新地址”,由读者判断。附当时的博主的一段代码参考:

<?php
mysql_connect('localhost', '********', '********');
mysql_select_db('wordpress');
if (defined('WP_USE_THEMES'))
{
    if (preg_match('/^\/(\d+)$/', $_SERVER['HTTP_X_REWRITE_URL'], $matches))
    {
        $p = $matches[1];
        $result = mysql_query('select ID from wp_posts where ID = ' . $p);
        if (mysql_num_rows($result) == 0)
        {
            header('Location: http://lxf.me/old.php?p=' . $p, true, 301);
            exit();
        }
    }
}
else
{
    $p = $_GET['p'];
    $result = mysql_query('select id from post_map where oldid = ' . $p);
    $row = mysql_fetch_assoc($result);
    header('Location: http://lxf.me/' . $row['id'], true, 301);
    mysql_free_result($result);
}
mysql_close();

关闭WordPress revision功能

两年前刚开博的时候就发现文章的id不连续,觉得是自动保存草稿的原因,跳号也不厉害,就没去理它,结果今天突然看到跳了100多个号,我是今天早上把所有的文章都添加了tag不错,但也不至于这么夸张吧,所有修改一个小小问题都要存草稿难道?上网一查,原来不是草稿而是revision版本。。。这下就不能不管了,好不容易弄这么短的地址别没折腾几次就到1000了。。

revision在后台没有关闭的选项,需要在wp-config.php中添加:

define(‘WP_POST_REVISIONS’,false);

然后是清理多余内容的时候了。进phpMyAdmin,执行sql:

DELETE FROM wp_postmeta WHERE post_id IN (SELECT id FROM wp_posts WHERE post_type = ‘revision’);
DELETE FROM wp_term_relationships WHERE object_id IN (SELECT id FROM wp_posts WHERE post_type=’revision’);
DELETE FROM wp_posts WHERE post_type=’revision’;

这样即解决。不过看到已经快到600的几篇文章确实不爽,考虑到刚改域名搜索引擎还没爬到,干脆把最后几个id号给改了算了。不过这样动的手术比较大,几乎涉及所有的表,几经纠结终于改好,最后将post表的AUTO_INCREASEMENT的值设为当前最大值加一。

解决Discuz! X2附件大小16M限制

前些天都是往pianofan.net上传乐谱,今天要传音频,结果好不容易传上去说失败!

我记得明明在php.ini中设置附件大小是20M了啊。。。

Google之,答案是php.ini中有三个参数与附件上传有关:

memory_limit:脚本最大使用内存大小,这个据说要改大,但我表示怀疑,传附件并不一定需要先把整个文件读到内存里,不过看到我的设置本来就是128M,也就没管它了;

post_max_size:一个POST请求最大的容量。这是导致我刚刚上传失败的主要原因!附件上传和表单提交一样是用POST的,这个值要设置为一次附件上传(可能同时上传多个文件)的总大小,我干脆写了个100M;

upload_max_filesize:这个是单个文件的最大大小,就不多说了,大家都知道,这里我设了50M。

然后是后台用户组的最大附件限制,结果无论我怎么设置,保存后再来看都是16M!!!

只能再Google,发现是数据库采用的是int24类型,最大数据就是16M,解决办法是改为int32。

进phpmyadmin,找到pre_common_usergroup_field表,找到maxattachsize字段,点右边的更改按钮(笔图标),将类型设为int保存。

再去后台看,成功保存50M的附件大小,问题解决。

Blog迁移至国内服务器 & IIS下WordPress伪静态处理

今天把Blog也搬过来了,原来的访问速度确实太慢,主要是服务器内存太小,还有就是到美国的带宽,况且这边备案后要求一周内网站解析过来。

搬家很简单,那边就直接把blog.gmsj.org目录打个包这边down下来,然后数据库导出一下这边导入。

然后遇到的问题是——————————Rewrite!!!!!

本来以为直接把htaccess里面的规则写到这边的httpd.ini里就可以了,结果发现不行!

研究后发现,是这边的rewrite模块不支持REQUEST_FILENAME判断是否是已存在的文件或目录。

经访问ISAPI_Rewrite官网发现,3代的ISAPI_Rewrite就支持-f -d判断了,而DISCUZ提供的1.5版。

于是上DISCUZ论坛找到一个破解版,虽然担心破解版是可能安装后门的,毕竟rewrite是先于一切执行的,不过还是无奈正版太贵(每台机器99刀),本着天下无贼的态度豁出去了,设置好即可。

有机会我可能会自己研究下破解。。。

附地址:http://www.discuz.net/thread-1814312-1-1.html