页面

2008年6月21日

HowTo:搭建家用下载&路由服务器

其实这篇文章不能说是 HowTo ,最多只能说是我自己的安装笔记而已。该服务器主要用来下载和实现共享上网,有空还可以用它来研究iptables。整个系统没有鼠标键盘显示器,全都日常维护都是用SSH进行,所以使用了密钥的验证方式确保安全。下载方面用mldonkey实现,通过局域网内其他电脑用网页方式管理,唯一的不足是对BT下载支持不够。由于服务器基本上都是24小时运作的,所有在上面弄了个dnsmasq,实现DNS缓存和DHCP,局域网的其他机器ip都是自动获取,接上网线就能上网,十分方便。

先说说用到的软件
  • ArchLinux
  • ssh
  • iptables
  • dnsmasq
  • mldonkey

ArchLinux
选择安装包时只选择 base 组,加上 support 组中 re-pppoe,sudo,iptables等几个包,安装一个最小系统。安装完后运行
# pacman-optimize
# sync
# pacman -Syu mldonkey dnsmasq

ssh
为了安全,我这里设置了只允许用密钥验证,以下是我的 /etc/ssh/sshd_config 文件的内容
Port 22
ListenAddress 0.0.0.0
Protocol 2

KeyRegenerationInterval 1h
ServerKeyBits 768

LoginGraceTime 2m
PermitRootLogin yes

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no

ChallengeResponseAuthentication no
UsePAM yes
Subsystem sftp /usr/lib/ssh/sftp-server

iptables
由于服务器上只有一张网卡连接到交换机,再通过交换机连接到 ADSL Modem 上,所以需要共享服务器上的ppp0链接让局域网上的其他机器上网。
# iptables -F INPUT
# iptables -F FORWARD
# iptables -F POSTROUTING -t nat
# iptables -t nat -F
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
# iptables-save -c > /etc/iptables/iptables.rules

dnsmasq
这个主要是用来做 dns 缓存和 dhcp 服务,参考了 firefoxmmx 写的这篇教程《提高ADSL(pppoe)上网速度
# vi /etc/dnsmasq.conf

找到下面这一项
#resolv-file=

用下面的一条语句替换
resolv-file=/etc/resolv_dnsmasq.conf

将下面两句前的注释符号删除
interface=eth0
dhcp-range=192.168.1.10,192.168.1.20,255.255.255.0,24h

创建新的dns配置文件,把自己常用的DNS添加到/etc/resolv_dnsmasq.conf中
# cp /etc/resolv.conf /etc/resolv_dnsmasq.conf

编辑 /etc/ppp/pppoe.conf
# vi /etc/ppp/pppoe.conf

找到下列一行
PEERDNS=NO

并在该行下面添加
DNS1 = 127.0.0.1

mldonkey
这里要注意 mldonkey 默认只允许 127.0.0.1 访问,要首先设置允许其他网段访问。~/.mldonkey/downloads.ini 文件的第37行就是设置的地方。再配合《导入 amule/emule 的设置到 Mldonkey》和《让 MLDonkey 导入 amule/emule 的临时文件》两篇文章,驴子基本上能全速运行了,如果你遇到中文文件名变成下划线的问题,可以参考这篇文章《解决 Mldonkey 中文文件变下划线问题 》。

最后启动服务
# /etc/rc.d/iptables start
# /etc/rc.d/sshd start
# /etc/rc.d/samba start
# /etc/rc.d/dnsmasq start
# /etc/rc.d/mldonkey start

或者编辑 /etc/rc.conf 文件,添加到 daemon 段中。

ok,收工,enjoy it。

2008年6月19日

解决 Mldonkey 中文文件变下划线问题

用了 Mldonkey 一段时间了,对他的速度很满意,决定以后也将继续使用下去,但是对他的中文文件名变成下划线这个问题一直很苦恼。今天 Google 了一下,根据这篇文章,找到了个比较满意的解决方法,这里记录下面。我使用的系统是 ArchLinux ,Mldonkey 版本是 2.9.5 。

网上盛传的那个 Unicode 的补丁其实在 2.9 的版本上已经自带有了,不用打补丁编译的,但是即使用上现在最新的 2.9.5 版也一样会有下划线问题,真正解决问题的关键是设置运行 mlnet 的用户的 LANG 和 LC_ALL 环境变量为 zh_CN.UTF8。

首先新建 /usr/bin/mlnet.sh 文件,写入以下内容
#!/bin/bash
export LANG=zh_CN.UTF8
export LC_ALL=zh_CN.UTF8
/usr/bin/mlnet & > /tmp/mldonkey.log &

然后编辑 /etc/rc.d/mldonkey 文件,查找到下面的内容
su $MLDUSER -c "/usr/bin/mlnet &> /tmp/mldonkey.log &"

更改为以下内容
su $MLDUSER -c "/usr/bin/mlnet.sh &"

保存,现在重启 mldonkey
sudo /etc/rc.d/mldonkey restart

过段时间查看那些下载完成的文件,你会发现文件名不会再有下划线了,问题解决。

(6月20日补充)
这个是经过一个晚上下载后的截图,图中的第一部分是应用该方法前下载到的文件,中文部分都变成了下划线,而第二部分是昨天晚上下载的,已经解决了中文文件名的问题。

2008年6月18日

wine 1.0 正式版发布

在经过长达 15 年发展后,wine 终于发布了 1.0 正式版,可喜可贺。以下是截取自维基百科中对 wine 的介绍。
  • Wine计划是在1993年由Bob Amstadt及Eric Youngdale发起的,最初的目的是为了使16位元的视窗3.1的程式可以在Linux上执行,但现在已将目的变为使32位元的视窗程式在Linux上执行。
  • Wine不是模拟器,而是用兼容模式呼唤DLLs以运行视窗程式
  • Wine虽然是为Linux而制,但亦能支持FreeBSD 与 Solaris-x86。
  • 因为视窗之DLLs是闭源的,所以程式设计师只能由最底层的设计开始,耗费大量的时间来编写和测试,最后达至兼容。但这个过程往往会有很多困难,而且亦可能会出现很多错误。
  • 当Corel参加这个计划后,Wine很快便能兼容WordPerfect Office,很可惜,Corel后来停止了支持这个计划。
  • Wine虽然可运行大部份视窗程式,但只能极有限度地运行以DirectX所编写的游戏,亦即是很多游戏不能在其运行。
  • Wine的延伸计划主要有两大产品,一个是CodeWeavers开发的CrossOver Office,另一个是TransGaming Technologies的Cedega,CrossOver Office以提供应用软件支援为主,Cedega则锁定在游戏娱乐方面。CodeWeavers和Wine计画一直保有密切的合作关系。 CodeWeavers亦僱用了Alexandre Juillard以将CrossOver Office的原始码回馈给Wine。在2005年6月22日,CodeWeavers 宣布支持基于英特尔处理器的苹果电脑。
  • Transgaming的Cedega则是商业软件,以Wine为基础,在Wine更换授权后停止使用Wine的原始码,虽然有Cedega提供原始码下载(经由CVS),但在不包含专利技术的情形下,功能与可用性都不高。

下载
Ubuntu 8.04 / Debian Etch (4.0)
添加 gpg
wget -q http://wine.budgetdedicated.com/apt/387EE263.gpg -O- | sudo apt-key add -

添加 Wine 的官方源
For Ubuntu Hardy (8.04)
sudo wget http://wine.budgetdedicated.com/apt/sources.list.d/hardy.list -O /etc/apt/sources.list.d/winehq.list

For Debian Etch (4.0)
sudo wget http://wine.budgetdedicated.com/apt/sources.list.d/etch.list -O /etc/apt/sources.list.d/winehq.list

更新系统并安装 wine
$ sudo apt-get update
$ sudo apt-get install wine


Fedora / SUSE 等用户可以到这个地址下载 rpm 包安装。

Archlinux 用户直接用下列的命令安装
# pacman -S wine

为自己常用的命令设置一个简短别名

顾名思义,就是为一些日常使用频率比较高的命令另起一个别名,例如为 sudo pacman -S 命令创建一个别名为 pa ,在安装软件时我们不用再打 sudo pacman -S xxx 这么长的命令了,直接输入 pa xxx 即可!!可以节省一些打字的时间。如果是 ubuntu 系统,可以将下面的 pacman 换成 apt-get ,效果一样。

设置过程非常简单,首先打开家目录下的 .bashrc 文件,例如用 gedit 编辑器打开
$ gedit ~/.bashrc

然后把下列内容粘贴到文件里,这是我自己的别名,大家可以根据自己的需求进行修改或添加
alias ls='ls --color=auto'
alias la='ls -la --color=auto'
alias ll='ls -l --color=auto'
alias pa='sudo pacman -S'
alias pas='sudo pacman -Ss'
alias pau='sudo pacman -Syu'
alias pay='sudo pacman -Sy'

保存文件,然后注销,现在打开一个终端,输入 pau 试试,是不是已经在更新系统了。