页面

2011年9月28日

我的Home Server(第三部分)

文件服务器

文件服务器我是使用Samba来实现。

安装:

# aptitude install samba

编辑配置文件:

# mv /etc/samba/smb.conf /etc/samba/smb.conf.backup
# vi /etc/samba/smb.conf
#====== Global Settings ======
[global]
#设置工作组名字、主机名、最大连接数
   workgroup = WORKGROUP
   server string = %h server
   dns proxy = no
   max connections = 10

#只监听来自eth0网卡的请求
   interfaces = eth0
   bind interfaces only = yes

#日志文件位置和大小
   log file = /var/log/samba/log.%m
   max log size = 500

#采用输入用户密码才能访问共享的方式
   security = user
   encrypt passwords = true
   passdb backend = tdbsam
   obey pam restrictions = yes

#设置用户Samba密码和系统密码同步,同步的方向是改变Samba密码,系统密码跟着改变(没有做测试,猜得)
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes


#====== Share Definitions ======
[homes]
   comment = Home Directories
   browseable = no
   read only = no
   create mask = 0644
   directory mask = 0755
   valid users = %S

[download]
   comment = Download Directories
   path = /media/download
   browseable = yes
   read only = no
   create mask = 0644
   directory mask = 0755
   valid users = kaysiness

解析一下 Share Definitions 部分的含义:(更多的含义可以查看 man smb.conf 手册)

  • comment = Home Directories
    设置共享的注释说明
  • path = /media/download
    共享的路径
  • browseable = yes
    设置是否让该共享可见
  • read only = no
    设置共享目录是否只读
  • create mask = 0644
    创建文件时的默认权限
  • directory mask = 0755
    创建文件夹时的默认权限
  • valid users = kaysiness
    允许访问该共享目录的用户名,如果在前面加@这个符号,例如@kaysiness,即表示kaysiness这个组

设置kaysiness用户的Samba密码,以普通用户运行:

$ smbpasswd

如果出现下面的错误提示,尝试把密码的长度加到6位以上

machine 127.0.0.1 rejected the password change: Error was : Password restriction.
Failed to change password for kaysiness

或者用root运行:

# smbpasswd -a kaysiness

重启Samba服务:

# /etc/init.d/samba restart

现在可以到其他机器上输入 \\HOMESERVER\download 来访问共享了。


UPnP

UPnP协议能实现的功能很多,不过我只是用来做内网机器的自动端口映射而已,而在Linux下做这件事的正是linux-igd。

安装:

# aptitude install linux-igd

设置外网端口和内网端口:

# vi /etc/default/linux-igd
EXTIFACE=ppp0
INTIFACE=eth0
ALLOW_MULTICAST="yes"

解析一下含义:

  • EXTIFACE=ppp0
    连接外网的端口
  • INTIFACE=eth0
    连接内网的端口
  • ALLOW_MULTICAST="yes"
    打开多播

启动linux-igd服务:

# /etc/init.d/linux-igd start

把linux-igd添加到启动列表里:

# update-rc.d linux-igd defaults

下图是内网一台机器上的eMule使用UPnP协议实现的自动端口映射。


第三部分完


相关文章

2011年9月25日

配置Transmission-cli和WebUI访问

前言

最近一直在寻找Linux CLI命令行下好用的BT客户端,首先试用的是这篇文章的主角:Transmission-cli,于是便有了这篇文章。

软件环境

  • OS:Debian stable(squeeze 6.0.2)
  • Transmission-cli 2.03

名词解释

  • 10.0.0.1
    文章里的 10.0.0.1 这个IP地址是指运行着Transmission-cli服务端的主机IP地址。
  • Transmission-cli
    Transmission-cli是BitTorrent分享软件“Transmission”的命令行版本,可以不依赖X11运行。
  • WebUI
    通过Transmission提供的接口,利用网页控制Transmission主程序。

配置

安装

# aptitude install transmission-cli transmission-daemon

先停止Transmission-cli的守护进程

# /etc/init.d/transmission-daemon stop

编辑配置文件

# vi /etc/transmission-daemon/settings.json
"download-dir": "/media/download/bt/",
"rpc-password": "密码",
"rpc-username": "kaysiness",
"rpc-port": 9091,
"rpc-whitelist": "127.0.0.1,10.0.0.*",
"rpc-whitelist-enabled": true,
  • download-dir
    设置默认的下载存放目录
    注意:在Debian里transmission-daemon是以debian-transmission用户运行的,所以需要确保debian-transmission用户必须对下载存放目录有写权限!
  • rpc-password
    设置登录密码,可以直接用明文填写,当运行Transmission-cli后会自动转换成哈希的形式
  • rpc-username
    设置登录的用户名
  • rpc-port
    设置监听的端口
  • rpc-whitelist
    设置可以访问的白名单IP地址,多个地址可以用英文逗号隔开
  • rpc-whitelist-enabled
    让白名单生效

重新运行Transmission-cli的守护进程

# /etc/init.d/transmission-daemon start

Webui访问

在浏览器里输入 http://10.0.0.1:9091 ,登录后就能看到下面的界面了。

下面是Webui的一些截图




Transmission-remote-dotnet访问

Transmission-remote-dotnet是一个Windows下远程控制Transmission的客户端程序。

首先到项目主页里下载最新版的Transmission-remote-dotnet,安装后运行。


在“本地设置”里添加 10.0.0.1:9091 并设置验证



然后点菜单里的“连接”,即可连接到远程的Transmission-cli。


更多的Transmission-remote-dotnet截图可以访问项目主页里的介绍


全文完

2011年9月22日

搭建Debian的网络引导安装环境(PXE+TFTP)

前言

因为最近要为家里一台没有光驱、没有任何操作系统(新硬盘)、不支持USB启动的机器上安装Debian,还好这破主板的集成网卡支持PXE启动,于是便准备用PXE+TFTP来引导安装。维基百科上的TFTPPXE解析。

注意:要实现TFTP,需要网内必须有一台能工作的DHCP服务器,而且该DHCP服务器必须支持TFTP协议。


TFTP

我是使用我家里的Home Server里的Dnsmasq来实现的,可以通过运行 dnsmasq -v 命令来查看你的Dnsmasq是不是支持TFTP,留意下图红色方框部分。(话说Dnsmasq真是个好东东,更多的Dnsmasq使用方法可以看看我的另一篇文章《我的Home Server(第二部分)》)

确认支持TFTP后,先新建TFTP的配置文件并填写下面的内容:

# vi /etc/dnsmasq.d/tftp.conf
enable-tftp
tftp-root=/opt/tftpboot
dhcp-boot=pxelinux.0,boothost,10.0.0.1

解析一下 tftp.conf 里的一些设置:

  • enable-tftp
    打开Dnsmasq内置的TFTP支持
  • tftp-root=/opt/tftpboot
    设置TFTP文件的存放位置
  • dhcp-boot=pxelinux.0,boothost,10.0.0.1
    设置启动文件,格式为 syslinux启动文件名,,tftp服务器IP地址

然后从自己喜欢的Debian源里下载 netboot.tar.gz 文件(例如这个地址),把里面的所有文件解压到上面设置的TFTP存放位置里,例如本例子是:

# tar xzvf netboot.tar.gz -C /opt/tftpboot

文件都准备完成了,现在是时候启动Dnsmasq了

# /etc/init.d/dnsmasq start

至此,TFTP服务器准备完成。不过有一点必须注意:如果你是自己写的Dnsmasq启动脚本,必须确保启动Dnsmasq的用户对TFTP的文件有读权限。


PXE引导安装Debian

把需要安装Debian的机器接上网线,确保网络没问题后,在机器的BIOS里设置由网络启动,等待加载后,你将会看到下面的安装界面了,接着按照向导安装即可。

注意:在一些奇怪的主板上,可能需要用到安装向导里的 Advanced Options > Expert install 来安装,例如我这块破主板,不然会卡在上图的界面没有响应。


全文完

2011年9月16日

我的Home Server(第二部分)

DHCP & DNS

这部分我是使用Dnsmasq来实现,如果你刷过DD-WRTTomato这些路由器固件的话应该对Dnsmasq不陌生。首先是安装Dnsmasq:

# aptitude install dnsmasq

为了日后维护方便,推荐在 /etc/dnsmasq.d/ 目录下新建一些配置文件,比如针对DNS部分的 dns.conf,针对DHCP的 dhcp.conf。(这些文件名只是举例而已,你可以取任何喜欢的文件名。)

首先是DNS的配置文件

# vi /etc/dnsmasq.d/dns.conf
## DNS缓存
resolv-file=/etc/resolv_dnsmasq.conf

## 对域名指定DNS服务器
server=/twitter.com/8.8.4.4
server=/facebook.com/8.8.4.4

## 域名泛解析
address=/google.com/10.0.0.130
address=/ggpht.com/10.0.0.130

解析一下 dns.conf 里的一些设置:

  • DNS缓存
    顾名思义就是将DNS查询的结果在本地做缓存,等下次再查询该域名时可以直接返回本地缓存的结果以加快解析速度(这里有一个例子说明)。要实现这个功能首先要新建 /etc/resolv_dnsmasq.conf 这个配置文件,然后在里面填上常用的DNS服务器,例如:
    # vi /etc/resolv_dnsmasq.conf
    nameserver 8.8.4.4
    nameserver 208.67.222.222
  • 对域名指定DNS服务器
    因为一些奇怪的问题,我是不会使用国内的DNS服务器的,而是使用国外的DNS服务器,这时一些国内的网站解析出来的IP地址可能是国外的地址,这样就造成了访问速度降低(我用国内的IP去访问这个网站的国外IP)。这种情况确实存在,例如国内某个渣雷看看。为了避免这种情况,可以在Dnsmasq里为特定的域名设置一个特定的DNS服务器来解析。配置的格式是:
    server=/网站域名/DNS服务器地址
  • 域名泛解析
    这个泛解析可以实现的功能可多了,例如例子里对 google.com 解析为 10.0.0.130,这时我无论是查询 www.google.com、还是 mail.google.com,都会返回10.0.0.130这个地址,在某些情况下可是很有用的。配置的格式是:
    address=/网站域名/指定的IP地址

下面是DHCP的配置文件

# vi /etc/dnsmasq.d/dhcp.conf
# 监听固定的网卡端口
interface=eth0
bind-interfaces

# IP分配
dhcp-range=10.0.0.100,10.0.0.120,24h # IP分配范围和租约时长
dhcp-option=3,10.0.0.1 # 分配的网关
dhcp-option=6,10.0.0.1 # 分配的DNS

# 固定主机
dhcp-host=00:11:22:33:44:55,10.0.0.10 # 为某MAC地址分配固定的IP地址
dhcp-host=00:66:77:88:99:aa,10.0.0.20

解析一下 dhcp.conf 里的一些设置:

  • 监听固定的网卡端口
    顾名思义,就是只回应 eth0 网卡接收到的 dhcp 和 dns 请求。
  • IP分配
    这里是配置分配的IP地址范围、网关、DNS和租约时长。配置的格式是:
    dhcp-range=起始IP地址,结束IP地址,租约时长
    dhcp-option=3,网关IP地址
    dhcp-option=6,DNS服务器IP地址
  • 固定主机
    为固定的MAC地址分配固定的IP地址,可以方便日后管理。配置的格式是:
    dhcp-host=MAC地址,IP地址

最后运行下面命令重启Dnsmasq服务即可生效。

# /etc/init.d/dnsmasq restart

第二部分完


相关文章

2011年9月14日

我草泥马的电信插帧广告

事情是这样的,中午我在写前一篇博文时,需要插入一张网络拓扑图,要画网络拓扑图自然就想起了Visio,但我没有装这玩意,为了一张图而去装也好像不太现实,于是Google搜索有没有在线的,还真的找到一个Diagram.ly,于是开始在上面画拓扑图的草稿。因为要去吃午饭,于是想把草稿保存下来等下午再继续画(我有离开电脑时会关机or待机的习惯),于是我点了那个 Save 的按钮,然后弹出了一个新的网页窗口,因为是 xml 文件,我没有留意(在Chrome下打开过xml文件的都知道痛苦),于是保存到本地后就关掉网页了。悲剧从这里开始,等我吃完饭回来重新打开那个疑似 xml 的文件后,却一直打开不成功,尝试了好几次都一样,于是用记事本打开那个 xml 文件,一瞬间我囧了。


我草泥马的电信插帧广告啊,凸(艹皿艹=)>

我的Home Server(第一部分)

前言

Home Server,顾名思义,就是一台负责为家里的局域网内所有终端提供各种服务的电脑。

我要求Home Server必须具有的功能

  1. ADSL拨号与共享
  2. DHCP & DNS
  3. P2P文件共享
  4. 文件服务器
  5. UPnP

系统方面我选择Debian stable,毕竟稳定是第一前提。╮( ̄▽ ̄)╭


网络环境

Home Server主机有两个网卡,eth0接家里的局域网交换机,eth1接ADSL modem。

网络拓扑图


Debian的安装

从自己喜欢的源里下载 netboot.tar.gz 文件(例如这个地址),解压后得到 linux 和 initrd.gz 两个文件,然后在引导管理器(我使用Grub4Dos)里添加:

title Debian Install i386
find --set-root /linux
kernel /linux
initrd /initrd.gz

即可硬盘(U盘)安装Debian stable了(这是网络安装,需要网络支持)。具体的安装过程就不写了,Google可以搜索到一大把。

安装完Debian后,先安装一些必须的软件包:

  • SSH
    • # aptitude install openssh-server
  • screen
    • # aptitude install screen
  • vim
    • # aptitude install vim

然后对Debian进行配置

  • # vi /etc/network/interfaces(网卡的IP地址)
    allow-hotplug eth0
    iface eth0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    broadcast 10.0.0.255

    allow-hotplug eth1
    iface eth1 inet manual
  • # dpkg-reconfigure locales(系统locale)


ADSL拨号与共享

首先安装pppoeconf软件包

# aptitude install pppoeconf

然后配置pppoeconf,运行下面的命令然后根据向导配置即可,向导最后会询问是否开机自动拨号,根据需要选择吧,也可以到 /etc/network/interfaces 下修改。

# pppoeconf

如果需要共享ADSL链接给局域网内的机器,需要打开ipv4的地址转发功能

# vi /etc/sysctl.conf
net.ipv4.ip_forward=1(把这句话前的#号去掉)

添加一条iptables规则

# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o ppp0 -j MASQUERADE(注意红字部分为我的局域网IP段)

然后在局域网其他电脑里设置网关为10.0.0.1,然后再填一个DNS地址即可上网了(当然,还是推荐用DHCP分配)。


第一部分完


相关文章

2011年9月9日

⑨节

⑨月⑨日,又称⑨节(嘛,其实就是东方Project里面那只萌⑨),看着这个视频特别有感觉 ʅ(‾◡◝)ʃ