2009年07月11日

整理一些linux系统一些常用的系统信息查看命令.

  有些在freebsd下也能用…

  # uname -a               # 查看内核/操作系统/CPU信息

  # head -n 1 /etc/issue   # 查看操作系统版本

  # cat /proc/cpuinfo      # 查看CPU信息

  # hostname               # 查看计算机名

  # lspci -tv              # 列出所有PCI设备

  # lsusb -tv              # 列出所有USB设备

  # lsmod                  # 列出加载的内核模块

  # env                    # 查看环境变量资源

  # free -m                # 查看内存使用量和交换区使用量

  # df -h                  # 查看各分区使用情况

  # du -sh <目录名>        # 查看指定目录的大小

  # grep MemTotal /proc/meminfo   # 查看内存总量

  # grep MemFree /proc/meminfo    # 查看空闲内存量

  # uptime                 # 查看系统运行时间、用户数、负载

  # cat /proc/loadavg      # 查看系统负载磁盘和分区

  # mount | column -t      # 查看挂接的分区状态

  # fdisk -l               # 查看所有分区

  # swapon -s              # 查看所有交换分区

  # hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)

  # dmesg | grep IDE       # 查看启动时IDE设备检测状况网络

  # ifconfig               # 查看所有网络接口的属性

  # iptables -L            # 查看防火墙设置

  # route -n               # 查看路由表

  # netstat -lntp          # 查看所有监听端口

  # netstat -antp          # 查看所有已经建立的连接

  # netstat -s             # 查看网络统计信息进程

  # ps -ef                 # 查看所有进程

  # top                    # 实时显示进程状态用户

  # w                      # 查看活动用户

  # id <用户名>            # 查看指定用户信息

  # last                   # 查看用户登录日志

  # cut -d: -f1 /etc/passwd   # 查看系统所有用户

  # cut -d: -f1 /etc/group    # 查看系统所有组

  # crontab -l             # 查看当前用户的计划任务服务

  # chkconfig –list       # 列出所有系统服务

  # chkconfig –list | grep on    # 列出所有启动的系统服务程序

  # rpm -qa                # 查看所有安装的软件包

  cat /proc/cpuinfo :查看CPU相关参数

  cat /proc/partitions :查看硬盘和分区

  cat /proc/meminfo :查看内存信息

  cat /proc/version :查看版本,类似uname -r

  cat /proc/ioports :查看设备io端口

  cat /proc/interrupts :查看中断

  cat /proc/pci :查看pci设备的信息

  cat /proc/swaps :查看所有swap分区的信息

2009年06月25日

输入如下命令:

       sudo sh /media/cdrom0/VBoxLinuxAdditions-x86.run

然后回车,要求你输入用户密码,你输入密码再回车即可

2008年01月22日

 1、只买上升轨道的股票,不买下降轨道的股票,如果股票一直在上升轨道,就永远持有,不要卖!

  

  2、在上升轨的下沿买进股票,然后持有,到上升轨发生明显的变化,卖出。

  

  3、局面复杂看不清的股票,千万不要进去,柿子捡软的捏,炒股也一样。

  

  4、不要把所有的钱一次性买进同一只股票,即便你非常看好它,而且事后证明你是对的,也不要一次性买进。总有可能买得更低,或者有更好的机会买进。

  

  5、如果误买了下降通道的股票,赶紧卖出,避免损失扩大。

  

  6、不要买太多的股票,最好不要超过五只。你没有那么多精力看着她们。如果你想娶五个老婆,即便你身体够好,你也满足不了你的老婆们。韦小宝的故事只发生在小说里。

如果没有损失,也赶紧退出观望。

  

  7、不是上升通道的股票,根本不要看。管它将来怎么样,不要陪主力去建仓。没时间陪他们耗着。

  

  8、赢钱时加仓,输钱时减码,如果你不想死的快而想赚得块,这是唯一的方法。

  

  9、不要相信业绩,那只代表过去,不代表将来。

  

  10、炒股是炒将来,不是过去。

  

  11、不要幻想老是去做短线,每天进进出出。股票不是*,频繁进出,可能给你带来快感,但会让你损失很多的钱,唯一受益的是证券公司,而且你不会有那么高的水准,你也不是庄家。

    

  12、股票很便宜了,跌了很多了,不是你买入的理由,永远不是!!!他还可能更加便宜!!!!

  

  13、股票很贵了,涨了很多了,也不是你拒绝买入或者卖出的理由。他还可能涨得更高!!!!!

  

  最后一点,股票不是你生活的全部,你还有你的家庭,还有你的事业,还有你的爱情,他们比你的股票更加宝贵。多陪陪他们,少陪陪股票。钱是永远赚不完的,但很多东西一旦失去了,就永远不再回来!!!!

2007年08月26日
网络结构如图,Linux路由器这台计算机标识为A,它与三个网段相连,192.168.1.0/24,10.0.0.0/8,172.16.0.0/16。

A计算机必须拥有三块网卡,分别与三个网段相连。

假设:
eth0与172.16.0.0相连,
eth1与10.0.0.0相连,
eth2与192.168.1.0相连。

首先来配置eth0。给这个网络接口分配地址172.16.1.1,运行下列命令:

# ifconfig eth0 172.16.1.1 netmask 255.255.0.0

为了使这个地址不再计算机重新启动后消失,
编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,修改为如下格式:

DEVICE = eth0
ONBOOT = yes
BROADCAST = 172.16.255.255
NETWORK = 172.16.0.0
NETMASK = 255.255.0.0
IPADDR = 172.16.1.1

增加一条静态路由:

# route add -net 172.16.0.0 netmask 255.255.0.0
这样系统中就增加了一条静态路由:

# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0

接下来,配置eth1,eth1与10.0.0.0网段相连,分配给它的地址是10.254.254.254,使用ifconfig命令为它配置参数:

# ifconfig eth1 10.254.254.254 netmask 255.0.0.0

同样编辑/etc/sysconfig/network-scripts目录下的ifcfg-eth1文件,内容如下:

DEVICE = eth1
ONBOOT = yes
BROADCAST = 10.255.255.255
NETWORK = 10.0.0.0
NETMASK = 255.0.0.0
IPADDR = 10.254.254.254

再增加一条静态路由:
# route add -net 10.0.0.0 netmask 255.0.0.0

网络中当前的路由表为
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 eth1

最后配置eth3,它连接192.168.1.0网段,分配的IP地址是192.168.1.254,执行下列命令:

# ifconfig eth2 192.168.1.254 netmask 255.255.255.0

编辑/etc/sysconfig/network-scripts目录下的ifcfg-eth2文件,内容如下:

DEVICE = eth2
ONBOOT = yes
BROADCAST = 192.168.1.255
NETWORK = 192.168.1.0
NETMASK = 255.255.255.0
IPADDR = 192.168.1.254

再增加一条静态路由:
# route add -net 192.168.1.0 netmask 255.255.255.0

这样网络中就有三条静态路由记录了: # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 eth1
192.168.1.0 * 255.255.255.0 U 0 0 0 eth2

还要为系统增加一条缺省路由,因为缺省的路由是把所有的数据包都发往它的上一级网关(假设地址是172.16.1.100,这个地址依赖于使用的网络而定,由网络管理员分配),因此增加如下的缺省路由记录:
# route add default gw 172.16.1.100

这样系统的静态路由表建立完成,它的内容是
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 * 255.0.0.0 U 0 0 0 eth1
192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
default 172.16.1.100 0.0.0.0 UG 0 0 0 eth0

最后一步,要增加系统的IP转发功能。这个功能由/proc/sys/net/ipv4目录下的ip_forward文件控制,执行如下命令打开ip转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
这样我们的路由器基本上是配置好了

测试路由器的工作情况。

在linux路由器上测试:

第一步,测试自身网络是否工作正常,执行如下命令
ping 172.16.1.1
ping 192.168.1.254
ping 10.254.254.254
如果这些地址都能ping通,则第一步通过,否则查找原因,排除错误。

第二步,测试与上一级网关之间是否连通
ping 172.16.1.100
如果通畅,则正常;否则查找错误原因。

在192.168.1.0网络内测试,假设它的地址是192.168.1.1,
第一步,测试自身是否工作正常, ping 192.168.1.1
第二步,测试与网关是否连通, ping 192.168.1.254
第三步,测试与10.254.254.99是否连通,这是10.0.0.0网段内的一台计算机 ping 10.254.254.99
第四步,测试与外网地址是否连通 ping 172.16.1.100 如果连通了,表示路由器配置正确,否则,查找原因,并排除之。

 

我所用的是LINUX AS+VSFTPD-1.2.0-4的系统架构,在这里说明的是如果对配置文件不是很熟悉,最好做个备份,以免误操作:

1. 匿名服务器的连接(独立的服务器)
在/etc/vsftpd/vsftpd.conf配置文件中添加如下几项:
Anonymous_enable=yes (允许匿名登陆)
Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
Local_umask=022 (FTP上本地的文件权限,默认是077)
Connect_form_port_20=yes (启用FTP数据端口的数据连接)*
Xferlog_enable=yes (激活上传和下传的日志)
Xferlog_std_format=yes (使用标准的日志格式)
Ftpd_banner=XXXXX (欢迎信息)
Pam_service_name=vsftpd (验证方式)*
Listen=yes (独立的VSFTPD服务器)*
功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项

2. 开启匿名FTP服务器上传权限
在配置文件中添加以下的信息即可:
Anon_upload_enable=yes (开放上传权限)
Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)
Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

3. 开启匿名服务器下传的权限
在配置文件中添加如下信息即可:
Anon_world_readable_only=no
注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限
(R)读—–下传 (W)写—-上传 (X)执行—-如果不开FTP的目录都进不去

4.普通用户FTP服务器的连接(独立服务器)
在配置文件中添加如下信息即可:
Local_enble=yes (本地帐户能够登陆)
Write_enable=no (本地帐户登陆后无权删除和修改文件)
功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传

5. 用户登陆限制进其它的目录,只能进它的主目录
设置所有的本地用户都执行chroot
Chroot_local_user=yes (本地所有帐户都只能在自家目录)
设置指定用户执行chroot
Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list
注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可

6. 限制本地用户访问FTP
Userlist_enable=yes (用userlistlai 来限制用户访问)
Userlist_deny=no (名单中的人不允许访问)
Userlist_file=/指定文件存放的路径/ (文件放置的路径)
注:开启userlist_enable=yes匿名帐号不能登陆

7. 安全选项
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)

8. 查看谁登陆了FTP,并杀死它的进程
ps –xf |grep ftp
kill 进程号

 

 

1. 配置本地组访问的FTP

首先创建用户组 test和FTP的主目录

groupadd test

mkdir /tmp/test

然后创建用户

useradd -G test –d /tmp/test –M usr1

注:G:用户所在的组 d:表示创建用户的自己目录的位置给予指定

M:不建立默认的自家目录,也就是说在/home下没有自己的目录

useradd –G test –d /tmp/test –M usr2

接着改变文件夹的属主和权限

chown usr1.test /tmp/test —-这表示把/tmp/test的属主定为usr1

chmod 750 /tmp/test —-7表示wrx 5表示rx 0表示什么权限都没有

这个实验的目的就是usr1有上传、删除和下载的权限

而usr2只有下载的权限没有上传和删除的权限

当然啦大家别忘了我们的主配置文件vsftpd.conf

要确定local_enable=yes、write_enable=yes、chroot_local_usr=yes这三个选项是有的哦!

 

2. 配置独立FTP的服务器的非端口标准模式进行数据连接

这个非常容易:在VSFTPD。CONF中添加

Listen_port=33333

就可以了啦!

 

好了重头戏来了,这也是我为什么叫高手篇的缘故!^_^(大家不要扔鸡蛋哦!)

3. 配置单独的虚拟FTP,使用虚拟FTP用户,并使建立的四个帐户中有不同的权限

(两个有读目录的权限,一个有浏览、上传、下载的权限,一个有浏览、下载、删除和改文件名的权限)

A:配置网卡

第一块网卡地址是10.2.3.4 掩码是255.255.0.0

ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up

B:写入/etc/sysconfig中(为了重起后IP地址不会丢失)

cd /etc/sysconfig/network-scripts

cp ifcfg-eth0 ifcfg-eth0:1

vi ifcfg-eth0:1在其中修改内容如下

DEVICE=eth0:1

BROADCAST=211.131.4.255

HWADDR=该网卡的MAC地址

IPADDR=211.131.4.253

NETMASK=255.255.255.0

NETWORK=211.131.4.0

ONBOOT=yes

TYPE=Ethernet

wq推出

C:进入vsftpd.conf所在的文件夹

cp vsftpd.conf vsftpd2.conf

修改vsftpd.conf添加以下信息

Listen_address=10.2.3.4

修改vsftpd2.conf添加以下信息

Listen_address=211.131.4.253

Ftpd_banner=this is a virtual ftp test

到此虚拟的FTP服务器建立好了

D:建立logins.txt

vi /tmp/logins.txt

添加入下信息:

longlei————用户名

longlei————密码

zhangweibo

zhangweibo

jinhui

jinhui

lxp

lxp

格式要按照我的来哦,一个用户名,一个密码啦

F:建立访问者的口令库文件,然后修改其权限

db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db

G:进如/etc/pam.d/中创建ftp.vu

在此文件中添加如下信息

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

H:在/var/ftp/创建目录并改变其属性和它的属主

useradd -d /var/ftp/test qiang

chmod 700 /var/ftp/test

在目录中添加test_file测试文件

I:进入vsftpd2.conf修改其中的信息(我加的是)

Listen_yes

Anonymous_enable=no

Local_enable=yes

Write_enable=no

Anon_upload_enable=no

Anon_mkdir_write_enable=no

Anon_other_write_enable=no

Chroot_local_user=yes

Guest_enable=yes———-起用虚拟用户

Guest_username=qiang——将虚拟用户映射为本地用户

Listen_port=5555

Max_client=10

Max_per_ip=1

Ftpd_banner=this is a virtual server and users

Pam_service_name=ftp.vu

注:在主配置文件中给的权限越低,在后面分用户管理的时候对拥护的权限划分的空间就越大,因为主配置文件最高的限制服务先读主配置文件,然后再读用户的配置文件

重起服务

到此虚拟USER就建好了

J:在VSFTPD。CONF所在的目录中创建virtaul文件目录

并在文件目录中创建以你用户名命名的配置文件

Longlei zhangweibo jinhui lxp

在longlei中添加:

Anon_world_readable_only=no

在lxp中添加

Anon_world_readable_only=no

这样此两个用户就有了浏览目录的权限了

在jinhui中添加

Anon_world_readable_only=no

Write_enable=yes

Anon_upload_enable=yes

此用户就有了上传、下载和浏览的权限

在zhangweibo中添加

Anon_world_readable_only=no

Write_enable=yes

Anon_upload_enable=yes

Anon_other_write_enable=yes

此用户就有了上传、下载、删除文件目录、修改文件名和浏览的权限

K:修改vsftpd2.conf

加入user_config_dir=/vsftpd.conf所在的目录/virtual

重起服务器就搞定了

 

好了大家别走开,现在隆重推出VSFTPD。CONF中的我所知道的所有配置信息

Anonymous_enable=yes (允许匿名登陆)

Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)

Local_umask=022 (FTP上本地的文件权限,默认是077)

Connect_form_port_20=yes (启用FTP数据端口的数据连接)*

Xferlog_enable=yes (激活上传和下传的日志)

Xferlog_std_format=yes (使用标准的日志格式)

Ftpd_banner=XXXXX (欢迎信息)

Pam_service_name=vsftpd (验证方式)*

Listen=yes (独立的VSFTPD服务器)*

Anon_upload_enable=yes (开放上传权限)

Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)

Write_enable=yes (开放本地用户写的权限)

Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

Anon_world_readable_only=no (放开匿名用户浏览权限)

Ascii_upload_enable=yes (启用上传的ASCII传输方式)

Ascii_download_enable=yes (启用下载的ASCII传输方式)

Banner_file=/var/vsftpd_banner_file (用户连接后欢迎信息使用的是此文件中的相关信息)

Idle_session_timeout=600(秒) (用户会话空闲后10分钟)

Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)

Accept_timeout=60(秒) (将客户端空闲1分钟后断)

Connect_timeout=60(秒) (中断1分钟后又重新连接)

Local_max_rate=50000(bite) (本地用户传输率50K)

Anon_max_rate=30000(bite) (匿名用户传输率30K)

Pasv_min_port=50000 (将客户端的数据连接端口改在

Pasv_max_port=60000 50000—60000之间)

Max_clients=200 (FTP的最大连接数)

Max_per_ip=4 (每IP的最大连接数)

Listen_port=5555 (从5555端口进行数据连接)

Local_enble=yes (本地帐户能够登陆)

Write_enable=no (本地帐户登陆后无权删除和修改文件)

这是一组

Chroot_local_user=yes (本地所有帐户都只能在自家目录)

Chroot_list_enable=yes (文件中的名单可以调用)

Chroot_list_file=/任意指定的路径/vsftpd.chroot_list

(前提是chroot_local_user=no)

这又是一组

Userlist_enable=yes (在指定的文件中的用户不可以访问)

Userlist_deny=yes

Userlist_file=/指定的路径/vsftpd.user_list

又开始单的了

Banner_fail=/路径/文件名 (连接失败时显示文件中的内容)

Ls_recurse_enable=no

Async_abor_enable=yes

One_process_model=yes

Listen_address=10.2.2.2 (将虚拟服务绑定到某端口)

Guest_enable=yes (虚拟用户可以登陆)

Guest_username=所设的用户名 (将虚拟用户映射为本地用户)

User_config_dir=/任意指定的路径/为用户策略自己所建的文件夹

(指定不同虚拟用户配置文件的路径)

又是一组

Chown_uploads=yes (改变上传文件的所有者为root)

Chown_username=root

又是一组

Deny_email_enable=yes (是否允许禁止匿名用户使用某些邮件地址)

Banned_email_file=//任意指定的路径/xx/

又是单的

Pasv_enable=yes ( 服务器端用被动模式)

User_config_dir=/任意指定的路径//任意文件目录 (指定虚拟用户存放配置文件的路径)

2007年07月04日

2.1 /etc/hosts

包含(本地网络中)已知主机的一个列表。如果系统的 IP 不是动态获取,就可以使用它。对于简单的主机名解析(点分表示法),在请求 DNS 或 NIS 网络名称服务器之前,/etc/hosts.conf 通常会告诉解析程序先查看这里。

 

文件格式:
ip地址          主机名          别名

$ cat /etc/hosts

127.0.0.1       localhost.localdomain   localhost

 

2.2 /etc/services

Internet网络服务文件,将网络服务名转换为端口号/协议。由 inetd、telnet、tcpdump 和一些其它程序读取。文件中的每一行对应一种服务,它由4个字段组成,中间用TAB或空格分隔,分别表示“服务名称”、“使用端口”、“协议名称”以及“别名”。

 

文件格式:
服务            端口/端口类型           别名

$ cat /etc/services  |more

tcpmux          1/tcp                           # TCP port service multiplexer
echo            7/tcp
echo            7/udp
discard         9/tcp           sink null
discard         9/udp           sink null
systat          11/tcp          users
daytime         13/tcp
daytime         13/udp
netstat         15/tcp
qotd            17/tcp          quote
msp             18/tcp                          # message send protocol

 

2.3 /etc/hostname

主机名配置文件,该文件只有一行,记录着本机的主机名。

文件格式:

 

主机名
$ cat /etc/hostname
tonybox

 

2.4 /etc/host.conf

当系统中同时存在DNS域名解析和/etc/hosts主机表机制时,由该/etc/host.conf确定主机名解释顺序。示例:

 

order hosts,bind    #名称解释顺序
multi on            #允许主机拥有多个IP地址
nospoof on          #禁止IP地址欺骗

 

order是关键字,定义先用本机hosts主机表进行名称解释,如果不能解释,再搜索bind名称服务器(DNS)。

2.5 /etc/nsswitch.conf

名称服务交换设定档。它控制了数据库搜寻的工作,包括承认的 主机,使用者,群组等。此外,这个档案还定义了所要搜寻的 数据库,例如此行:

 

hosts: files dns

 

指明主机数据库来自两个地方,files ( /etc/hosts file) 和 DNS, 并且本机上档案优先于 DNS。

 

$ cat /etc/nsswitch.conf 

passwd:         compat
group:          compat
shadow:         compat

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

 

2.6 /etc/resolv.conf

该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数。resolv.conf的关键字主要有四个,分别是:

 

nameserver   #定义DNS服务器的IP地址
domain       #定义本地域名
search       #定义域名的搜索列表
sortlist     #对返回的域名进行排序

 

下边是一个示例:

 

#cat /etc/resolv.conf
domain mydebian.com
nameserver 192.168.1.1  //最多三个域名服务器地址

 

2.7 /etc/network/interfaces

网络接口参数配置文件, 下面是一个配置示例, 有两个网络接口, 其中eth0 分配静态IP地址, eth1动态获取IP地址 :

        # This file describes the network interfaces available on your system
        # and how to activate them. For more information, see interfaces(5).

        # The loopback network interface
        auto lo
        iface lo inet loopback

        # The primary network interface
        auto eth0
        iface eth0 inet static
                address 192.168.1.254
                network 192.168.1.0
                netmask 255.255.255.0
                broadcast 192.168.1.255
                gateway 192.168.1.1

        auto eth1
        iface eth1 inet dhcp

 

如果对此文件进行修改, 需要重启网络方能生效:

        # /etc/init.d/networking restart

 

3. 基本的网络配置命令和脚本

3.1 etherconf

Debian 下提供一个名叫 etherconf软件包, 用于配置网络信息,这包括主机名,IP,DHCP,DNS,GATEWAY,NETMASK…等, 默认没有安装这一软件包, 需要您手动安装:

 

        # aptitude install etherconf

 

安装完毕后运行:

 

        $dpkg-reconfigure etherconf

 

进行配置.

这个软件会修改以下配置文件:

 

        /etc/resolv.conf
        /etc/network/interfaces
        /etc/hosts
        /etc/hostname

 

重复使用这一配置文件的方法是:

 

        # dpkg-reconfigure etherconf

 

3.2 /etc/init.d/networking

系统启动时的初始化脚本, 当系统以某个级别启动时, 它负责初始化所有的已配置的网络接口.

3.3 ifconfig

用于配置常驻内核的网络接口。它用于在引导成功时设定网络接口。此后,只在需要调试及系统调整时才使用。

 

命令格式:
        ifconfig [接口]
        ifconfig 接口 [aftype] options | address ...

 

如没有给出参数, ifconfig 显示当前有效接口的状态。如给定单个 接口 作为参数,它只显示给出的那个接口的状态;如果给出一个 -a 参数,它会显示所有接口的状态,包括那些停用的接口。否则就对一个接口进行配置。

 

选项
        接口 接口名称。通常是一个后跟单元号的驱动设备名,例如第一个以太接口 eth0 。

        up
            此选项激活接口。如果给接口声明了地址,等于隐含声明了这个选项。
        down
            此选项使接口驱动设备关闭。

        netmask addr
            为接口设定 IP 网络掩码。缺省值通常是 A,B 或 C 类的网络掩码 (由接口的 IP 地址推出),但也可设为其它值。
        add addr/prefixlen
            为接口加入一个 IPv6 地址。
        del addr/prefixlen
            为接口删除一个 IPv6 地址。
        hw class address
            如接口驱动程序支持,则设定接口的硬件地址。此选项必须后跟硬件的类型名称和硬件地址等价的可打印 ASCII 字符。当前支持的硬件类型包括 ether (以太网), ax25 (AMPR AX.25), ARCnet 和 netrom (AMPR NET/ROM)

  利用ifconfig命令查看网络信息:

 

 

ifconfig
        eth0      Link encap:Ethernet  HWaddr 00:15:58:3E:F2:6B
                  inet addr:192.168.1.254  Bcast:192.168.1.255  Mask:255.255.255.0
                  inet6 addr: fe80::215:58ff:fe3e:f26b/64 Scope:Link
                  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                  RX packets:29458 errors:0 dropped:0 overruns:0 frame:0
                  TX packets:23690 errors:0 dropped:0 overruns:0 carrier:0
                  collisions:0 txqueuelen:1000
                  RX bytes:10945195 (10.4 MiB)  TX bytes:2935004 (2.7 MiB)
                  Interrupt:169 Base address:0xe200 

        eth0:0    Link encap:Ethernet  HWaddr 00:15:58:3E:F2:6B
                  inet addr:192.168.1.244  Bcast:192.168.1.255  Mask:255.255.255.0
                  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                  Interrupt:169 Base address:0xe200 

        lo        Link encap:Local Loopback
                  inet addr:127.0.0.1  Mask:255.0.0.0
                  inet6 addr: ::1/128 Scope:Host
                  UP LOOPBACK RUNNING  MTU:16436  Metric:1
                  RX packets:354 errors:0 dropped:0 overruns:0 frame:0
                  TX packets:354 errors:0 dropped:0 overruns:0 carrier:0
                  collisions:0 txqueuelen:0
                  RX bytes:45062 (44.0 KiB)  TX bytes:45062 (44.0 KiB)

        ppp0      Link encap:Point-to-Point Protocol
                  inet addr:18.18.18.13  P-t-P:18.18.18.1  Mask:255.255.255.255
                  UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1396  Metric:1
                  RX packets:9631 errors:0 dropped:0 overruns:0 frame:0
                  TX packets:9189 errors:0 dropped:0 overruns:0 carrier:0
                  collisions:0 txqueuelen:3
                  RX bytes:8460352 (8.0 MiB)  TX bytes:913898 (892.4 KiB)

 

ifconfig的第一种格式(或使用不带任何参数的ifconfig命令)可以用来查看当前系统的网络配置情况。

 

    * eth0 : 表示网卡代号
    * lo :Linux内部的网络回环地址, 用于模拟网络行为,
    * HWaddr :网卡的硬件地址,也就是MAC地址
    * inet addr :网卡的ip地址
    * Bcast :广播地址( broadcast ) ;
    * Mask :子网掩码;
    * MTU :最大传输单元的缩写(Maximum Trasmission Unit), 标示此网络接口的可传输的最大封包, 此值的设定错误可能引起网络故障.
    * RX :网络从起动到现在为止数据的接收情况
    * TX :网络从起动到现在为止数据的发送情况
    * collisions :网络信号发生冲突的情况;

 

激活网络设备

 

        ifconfig eth0 up

 

更改网络设备信息

 

        #ifconfig eth0 192.168.1.112 netmask 255.255.255.0

 

关闭网络设备

 

        ifconfig eth0 down

 

修改网卡的MAC地址

 

        ifconfig eth0 down
        ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
        ifconfig eth0 up

 

4. 网络服务相关

5. 测试网络

5.1 ping

向网络主机发送ICMP回显请求(ECHO_REQUEST)分组 程序使用 ICMP 协议的强制回显请求数据报以使主机或网关发送一份 ICMP 的回显应答。回显请求数据报(“ pings IP 及 ICMP 的报头,后跟一个“时间值关键字”然后是一段任意长度的填充字节用于把保持分组长度为16的整数倍。以下是程序的选项:

 

        ping  [-c count ] [-i wait ] [-p pattern ] [-s packetsize ] [ -t ttl]   destination

        -c
            count 在发送(和接收)了正好数量为 count 的回显应答分组后停止操作。
        -i
            wait 在发送每个分组时等待 wait 个秒数。缺省值为每个分组等待一秒。此选项与-f选项不能同时使用。

        -p
            pattern 可以指定最多16个填充字节用于保持分组长度为16的整数倍。在网络上诊断与数据相关问题时此选项很有用。例如``-p ff''将使发出的分组都用全1填充数据区。

        -s
            packetsize 指定要发送数据的字节量。缺省值为 56 ,这正好在添加了 8 字节的 ICMP 首部后组装成 64 字节的 ICMP 数据报。

        -t

           ttl指存活数值TTL的大小默认为255

 

 

        tony@tonybox:~$ ping www.linuxsir.org -c 4
        PING www.linuxsir.org (218.61.34.138) 56(84) bytes of data.
        64 bytes from 218.61.34.138: icmp_seq=1 ttl=52 time=103 ms
        64 bytes from 218.61.34.138: icmp_seq=2 ttl=52 time=125 ms
        64 bytes from 218.61.34.138: icmp_seq=3 ttl=52 time=126 ms
        64 bytes from 218.61.34.138: icmp_seq=4 ttl=52 time=110 ms

        --- www.linuxsir.org ping statistics ---
        4 packets transmitted, 4 received, 0% packet loss, time 3003ms
        rtt min/avg/max/mdev = 103.513/116.329/126.598/9.856 ms
        tony@tonybox:~$

 

5.2 route

Route route 程序对内核的 IP 路由表进行操作。它主要用于给那些已经用 ifconfig(8) 程序配置过的接口指定主机或网络设置静态路由。

当使用了 add 或 del 选项的时候, route 修改路由表.如果没有这些选项, route 显示当前路由表的内容.

 

        # route [-nee]
        # route add [-net|-host] 目标主机或网络 [netmask] [gw|dev]
        # route del [-net|-host] 目标主机或网络 [netmask] [gw|dev]

        -n   :数字地址形式代替解释主机名形式来显示地址。此项对检测为何你到域名服务器的路由发生故障的原因非常有用。
        -ee   :将产生包括选路表所有参数在内的大量信息
        add   :添加一条路由
        del   :删除一条路由
        -net  :路由目标 target 为网络。
        -host  :路由目标 target 为主机。
        netmask :为添加的路由指定网络掩码!
        gw    :通过一个网关进行包路由.

 

注意:

指定的网关首先必须是可达的。也就是说必须为该网关预先指定一条静态路由。如果你为本地接口之一指定这个网关地址的话,那么此网关地址将用于决定此接口上的分组将如何进行路由。这是兼容 BSD 风格。 dev   :强制路由与指定的设备关联,否则内核自己会试图检测相应的设备 (方法是检查要增加的路由项所处环境中已存在的路由和设备声明)。在多数正常的网络上无需使用。

 

        # route  查看本地路由信息
        tonybox:/etc/network/run# route
        Kernel IP routing table
        Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
        18.18.18.1      *               255.255.255.255 UH    0      0        0 ppp0
        192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
        default         *               0.0.0.0         U     0      0        0 ppp0

 

 

        route add -net 127.0.0.0
            加一条普通的回环记录,它使用掩码 255.0.0.0 (从目标地址可以判断它是 A 类网)并与设备 "lo" 相关联 .

        route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
            给通过 "eth0" 的路由表添加一条指向网络 192.56.76.x 的路由。其中 C 类子网掩码修饰词并不是必须的,因为 192.* 是个 C 类的 IP 地址。这里可省略关键字 "dev"。

        route add default gw 192.168.1.1
            加入一条缺省路由(如果无法匹配其它路由则用它)。使用此路由的所有包都将通过网关 192.168.1.1进行传输。

        route add 224.0.0.0 netmask 240.0.0.0 dev eth0
            这是一条模糊的命令,把它记录在案就可以让人们知道如何做了.此命令设定所有 D 类地址(用于组播)的路由通过 "eth0" 进行。这是用于带组播的内核正确的配置行。

 

5.3 traceroute

 

        traceroute [ -dFIlnrvx ] [ -f first_ttl ] [ -g gateway ]
                       [ -i iface ] [ -m max_ttl ] [ -p port ]
                       [ -q nqueries ] [ -s src_addr ] [ -t tos ]
                       [ -w waittime ] [ -z pausemsecs ]
                       host [ packetlen ]

 

通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。UNIX系统中,我们称之为 Traceroute,MS Windows中为Tracert。 Traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备Traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。

 

        -d
        指定不对计算机名解析地址。
        -h maximum_hops
        指定查找目标的跳转的最大数目。
        -jcomputer-list
        指定在 computer-list 中松散源路由。
        -w timeout
        等待由 timeout 对每个应答指定的毫秒数。
        host
        目标计算机的名称。

 

 

        # traceroute www.linuxsir.org
        traceroute to www.linuxsir.org (218.61.34.138), 30 hops max, 40 byte packets

 

6. 配置ADSL上网

首先,你要拥有上网帐号和密码, 并且有一块网卡正确的与ADSL moden正确相连

6.1 安装PPPoE软件包

 

        $ sudo install pppoe pppoeconf

 

6.2 然后进行配置

 

        确认检测到了您的网卡
        输入您的ADSL帐号
        输入您的ADSL帐号密码
        常规选项:是否修改默认路由: yes
                是否获取DNS: yes
        是否在引导时自动连接: yes
        是否马上建立连接: yes

 

完成这些步骤以后, 连接应该可以正常使用了

6.3 手动控制

 

        $ sudo pon dsl-provider #手动连接
        $ sudo poff dsl-provider #手动断开连接

 

6.4 FAQ

Q:拨号成功, 但无法和外网通讯

A:使用route命令检查本地路由, 看默认路由是否正确

Q:无法解析域名

A:检查/etc/resolv.conf文件,看是否正确获取了DNS

2007年06月25日
–  iptables详解
总览
用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改
iptables – [RI] chain rule num rule-specification[option]
用iptables – RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX 指定链
iptables -P chain target[options]
指定链的默认目标
iptables -E old-chain-name new-chain-name
-E 旧的链名 新的链名
用新的链名取代旧的链名
说明
Iptalbes 是用来设置、维护和检查Linux内核的IP包过滤规则的。
可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对
对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作\’target\’(目标),也可以
跳向同一个表内的用户定义的链。
TARGETS
防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,
那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过], DROP[
删除], QUEUE[排队], 或者 RETURN[返回]。
ACCEPT 表示让这个包通过。DROP表示将这个包丢弃。QUEUE表示把这个包传递到用户空间。RETURN表示停
止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规
则是RETURN,包的命运将由链准则指定的目标决定。
TABLES
当前有三个表(哪个表是当前表取决于内核配置选项和当前模块)。
-t table
这个选项指定命令要操作的匹配包的表。如果内核被配置为自动加载模块,这时若模块没有加载,(系统)
将尝试(为该表)加载适合的模块。这些表如下:filter,这是默认的表,包含了内建的链INPUT(处理进入
的包)、FORWORD(处理通过的包)和OUTPUT(处理本地生成的包)。nat,这个表被查询时表示遇到了产
生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)
、POSTROUTING(修改准备出去的包)。mangle 这个表用来对指定的包进行修改。它有两个内建规则:
PREROUTING(修改路由之前进入的包)和OUTPUT(修改路由之前本地的包)。
OPTIONS
这些可被iptables识别的选项可以区分不同的种类。
COMMANDS
这些选项指定执行明确的动作:若指令行下没有其他规定,该行只能指定一个选项.对于长格式的命令和选
项名,所用字母长度只要保证iptables能从其他选项中区分出该指令就行了。
-A -append
在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换为多个地址时,这条规则
会加到所有可能的地址(组合)后面。
-D -delete
从所选链中删除一条或更多规则。这条命令可以有两种方法:可以把被删除规则指定为链中的序号(第一
条序号为1),或者指定为要匹配的规则。
-R -replace
从选中的链中取代一条规则。如果源(地址)或者/与 目的(地址)被转换为多地址,该命令会失败。规
则序号从1开始。
-I -insert
根据给出的规则序号向所选链中插入一条或更多规则。所以,如果规则序号为1,规则会被插入链的头部
。这也是不指定规则序号时的默认方式。
-L -list
显示所选链的所有规则。如果没有选择链,所有链将被显示。也可以和z选项一起使用,这时链会被自动
列出和归零。精确输出受其它所给参数影响。
-F -flush
清空所选链。这等于把所有规则一个个的删除。
–Z -zero
把所有链的包及字节的计数器清空。它可以和 -L配合使用,在清空前察看计数器,请参见前文。
-N -new-chain
根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在。
-X -delete-chain
删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删除或者替换与之有
关的规则。如果没有给出参数,这条命令将试着删除每个非内建的链。
-P -policy
设置链的目标规则。
-E -rename-chain
根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响。TARGETS参数给出
一个合法的目标。只有非用户自定义链可以使用规则,而且内建链和用户自定义链都不能是规则的目标。
-h Help.
帮助。给出当前命令语法非常简短的说明。
PARAMETERS
参数
以下参数构成规则详述,如用于add、delete、replace、append 和 check命令。
-p -protocal [!]protocol
规则或者包检查(待检查包)的协议。指定协议可以是tcp、udp、icmp中的一个或者全部,也可以是数值,
代表这些协议中的某一个。当然也可以使用在/etc/protocols中定义的协议名。在协议名前加上"!"表示
相反的规则。数字0相当于所有all。Protocol all会匹配所有协议,而且这是缺省时的选项。在和check
命令结合时,all可以不被使用。
-s -source [!] address[/mask]
指定源地址,可以是主机名、网络名和清楚的IP地址。mask说明可以是网络掩码或清楚的数字,在网络掩
码的左边指定网络掩码左边"1"的个数,因此,mask值为24等于255.255.255.0。在指定地址前加上"!"说
明指定了相反的地址段。标志 –src 是这个选项的简写。
-d –destination [!] address[/mask]
指定目标地址,要获取详细说明请参见 -s标志的说明。标志 –dst 是这个选项的简写。
-j –jump target
-j 目标跳转
指定规则的目标;也就是说,如果包匹配应当做什么。目标可以是用户自定义链(不是这条规则所在的)
,某个会立即决定包的命运的专用内建目标,或者一个扩展(参见下面的EXTENSIONS)。如果规则的这个
选项被忽略,那么匹配的过程不会对包产生影响,不过规则的计数器会增加。
-i -in-interface [!] [name]
i -进入的(网络)接口 [!][名称]
这是包经由该接口接收的可选的入口名称,包通过该接口接收(在链INPUT、FORWORD和PREROUTING中进入
的包)。当在接口名前使用"!"说明后,指的是相反的名称。如果接口名后面加上"+",则所有以此接口名
开头的接口都会被匹配。如果这个选项被忽略,会假设为"+",那么将匹配任意接口。
-o –out-interface [!][name]
-o –输出接口[名称]
这是包经由该接口送出的可选的出口名称,包通过该口输出(在链FORWARD、OUTPUT和POSTROUTING中送出
的包)。当在接口名前使用"!"说明后,指的是相反的名称。如果接口名后面加上"+",则所有以此接口名
开头的接口都会被匹配。如果这个选项被忽略,会假设为"+",那么将匹配所有任意接口。
[!] -f, –fragment
[!] -f –分片
这意味着在分片的包中,规则只询问第二及以后的片。自那以后由于无法判断这种把包的源端口或目标端
口(或者是ICMP类型的),这类包将不能匹配任何指定对他们进行匹配的规则。如果"!"说明用在了"-f"
标志之前,表示相反的意思。
OTHER OPTIONS
其他选项
还可以指定下列附加选项:
-v –verbose
-v –详细
详细输出。这个选项让list命令显示接口地址、规则选项(如果有)和TOS(Type of Service)掩码。包
和字节计数器也将被显示,分别用K、M、G(前缀)表示1000、1,000,000和1,000,000,000倍(不过请参看
-x标志改变它),对于添加,插入,删除和替换命令,这会使一个或多个规则的相关详细信息被打印。
-n –numeric
-n –数字
数字输出。IP地址和端口会以数字的形式打印。默认情况下,程序试显示主机名、网络名或者服务(只要
可用)。
-x -exact
-x -精确
扩展数字。显示包和字节计数器的精确值,代替用K,M,G表示的约数。这个选项仅能用于 -L 命令。
–line-numbers
当列表显示规则时,在每个规则的前面加上行号,与该规则在链中的位置相对应。
MATCH EXTENSIONS
对应的扩展
iptables能够使用一些与模块匹配的扩展包。以下就是含于基本包内的扩展包,而且他们大多数都可以通
过在前面加上!来表示相反的意思。
tcp
当 –protocol tcp 被指定,且其他匹配的扩展未被指定时,这些扩展被装载。它提供以下选项:
–source-port [!] [port[:port]]
源端口或端口范围指定。这可以是服务名或端口号。使用格式端口:端口也可以指定包含的(端口)范围
。如果首端口号被忽略,默认是"0",如果末端口号被忽略,默认是"65535",如果第二个端口号大于第一
个,那么它们会被交换。这个选项可以使用 –sport的别名。
–destionation-port [!] [port:[port]]
目标端口或端口范围指定。这个选项可以使用 –dport别名来代替。
–tcp-flags [!] mask comp
匹配指定的TCP标记。第一个参数是我们要检查的标记,一个用逗号分开的列表,第二个参数是用逗号分
开的标记表,是必须被设置的。标记如下:SYN ACK FIN RST URG PSH ALL NONE。因此这条命令:
iptables -A FORWARD -p tcp –tcp-flags SYN, ACK, FIN, RST SYN只匹配那些SYN标记被设置而ACK、
FIN和RST标记没有设置的包。
[!] –syn
只匹配那些设置了SYN位而清除了ACK和FIN位的TCP包。这些包用于TCP连接初始化时发出请求;例如,大
量的这种包进入一个接口发生堵塞时会阻止进入的TCP连接,而出去的TCP连接不会受到影响。这等于 –
tcp-flags SYN, RST, ACK SYN。如果"–syn"前面有"!"标记,表示相反的意思。
–tcp-option [!] number
匹配设置了TCP选项的。
udp
当protocol udp 被指定,且其他匹配的扩展未被指定时,这些扩展被装载,它提供以下选项:
–source-port [!] [port:[port]]
源端口或端口范围指定。详见 TCP扩展的–source-port选项说明。
–destination-port [!] [port:[port]]
目标端口或端口范围指定。详见 TCP扩展的–destination-port选项说明。
icmp
当protocol icmp被指定,且其他匹配的扩展未被指定时,该扩展被装载。它提供以下选项:
–icmp-type [!] typename
这个选项允许指定ICMP类型,可以是一个数值型的ICMP类型,或者是某个由命令iptables -p icmp -h所
显示的ICMP类型名。
mac
–mac-source [!] address
匹配物理地址。必须是XX:XX:XX:XX:XX这样的格式。注意它只对来自以太设备并进入PREROUTING、
FORWORD和INPUT链的包有效。
limit
这个模块匹配标志用一个标记桶过滤器一一定速度进行匹配,它和LOG目标结合使用来给出有限的登陆数.
当达到这个极限值时,使用这个扩展包的规则将进行匹配.(除非使用了"!"标记)
–limit rate
最大平均匹配速率:可赋的值有\’/second\’, \’/minute\’, \’/hour\’, or \’/day\’这样的单位,默认
是3/hour。
–limit-burst number
待匹配包初始个数的最大值:若前面指定的极限还没达到这个数值,则概数字加1.默认值为5
multiport
这个模块匹配一组源端口或目标端口,最多可以指定15个端口。只能和-p tcp 或者 -p udp 连着使用。
–source-port [port[, port]]
如果源端口是其中一个给定端口则匹配
–destination-port [port[, port]]
如果目标端口是其中一个给定端口则匹配
–port [port[, port]]
若源端口和目的端口相等并与某个给定端口相等,则匹配。
mark
这个模块和与netfilter过滤器标记字段匹配(就可以在下面设置为使用MARK标记)。
–mark value [/mask]
匹配那些无符号标记值的包(如果指定mask,在比较之前会给掩码加上逻辑的标记)。
owner
此模块试为本地生成包匹配包创建者的不同特征。只能用于OUTPUT链,而且即使这样一些包(如ICMP
ping应答)还可能没有所有者,因此永远不会匹配。
–uid-owner userid
如果给出有效的user id,那么匹配它的进程产生的包。
–gid-owner groupid
如果给出有效的group id,那么匹配它的进程产生的包。
–sid-owner seessionid
根据给出的会话组匹配该进程产生的包。
state
此模块,当与连接跟踪结合使用时,允许访问包的连接跟踪状态。
–state state
这里state是一个逗号分割的匹配连接状态列表。可能的状态是:INVALID表示包是未知连接,ESTABLISHED
表示是双向传送的连接,NEW表示包为新的连接,否则是非双向传送的,而RELATED表示包由新连接开始,
但是和一个已存在的连接在一起,如FTP数据传送,或者一个ICMP错误。
unclean
此模块没有可选项,不过它试着匹配那些奇怪的、不常见的包。处在实验中。
tos
此模块匹配IP包首部的8位tos(服务类型)字段(也就是说,包含在优先位中)。
–tos tos
这个参数可以是一个标准名称,(用iptables -m tos -h 察看该列表),或者数值。
TARGET EXTENSIONS
iptables可以使用扩展目标模块:以下都包含在标准版中。
LOG
为匹配的包开启内核记录。当在规则中设置了这一选项后,linux内核会通过printk()打印一些关于全部
匹配包的信息(诸如IP包头字段等)。
–log-level level
记录级别(数字或参看 syslog.conf(5))。
–log-prefix prefix
在纪录信息前加上特定的前缀:最多14个字母长,用来和记录中其他信息区别。
–log-tcp-sequence
记录TCP序列号。如果记录能被用户读取那么这将存在安全隐患。
–log-tcp-options
记录来自TCP包头部的选项。
–log-ip-options
记录来自IP包头部的选项。
MARK
用来设置包的netfilter标记值。只适用于mangle表。
–set-mark mark
REJECT
作为对匹配的包的响应,返回一个错误的包:其他情况下和DROP相同。
此目标只适用于INPUT、FORWARD和OUTPUT链,和调用这些链的用户自定义链。这几个选项控制返回的错误
包的特性:
–reject-with type
Type可以是icmp-net-unreachable、icmp-host-unreachable、icmp-port-nreachable、icmp-proto-
unreachable、 icmp-net-prohibited 或者 icmp-host-prohibited,该类型会返回相应的ICMP错误信息
(默认是port-unreachable)。选项 echo-reply也是允许的;它只能用于指定ICMP ping包的规则中,生
成ping的回应。最后,选项tcp-reset可以用于在INPUT链中,或自INPUT链调用的规则,只匹配TCP协议:
将回应一个TCP RST包。
TOS
用来设置IP包的首部八位tos。只能用于mangle表。
–set-tos tos
你可以使用一个数值型的TOS 值,或者用iptables -j TOS -h 来查看有效TOS名列表。
MIRROR
这是一个试验示范目标,可用于转换IP首部字段中的源地址和目标地址,再传送该包,并只适用于INPUT、
FORWARD和OUTPUT链,以及只调用它们的用户自定义链。
SNAT
这个目标只适用于nat表的POSTROUTING链。它规定修改包的源地址(此连接以后所有的包都会被影响),
停止对规则的检查,它包含选项:
–to-source <ipaddr>[-<ipaddr>][:port-port]
可以指定一个单一的新的IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp 或者
-p udp的规则里)。如果未指定端口范围,源端口中512以下的(端口)会被安置为其他的512以下的端口
;512到1024之间的端口会被安置为1024以下的,其他端口会被安置为1024或以上。如果可能,端口不会
被修改。
–to-destiontion <ipaddr>[-<ipaddr>][:port-port]
可以指定一个单一的新的IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp 或者
-p udp的规则里)。如果未指定端口范围,目标端口不会被修改。
MASQUERADE
只用于nat表的POSTROUTING链。只能用于动态获取IP(拨号)连接:如果你拥有静态IP地址,你要用SNAT
。伪装相当于给包发出时所经过接口的IP地址设置一个映像,当接口关闭连接会终止。这是因为当下一次
拨号时未必是相同的接口地址(以后所有建立的连接都将关闭)。它有一个选项:
–to-ports <port>[-port>]
指定使用的源端口范围,覆盖默认的SNAT源地址选择(见上面)。这个选项只适用于指定了-p tcp或者-p
udp的规则。
REDIRECT
只适用于nat表的PREROUTING和OUTPUT链,和只调用它们的用户自定义链。它修改包的目标IP地址来发送
包到机器自身(本地生成的包被安置为地址127.0.0.1)。它包含一个选项:
–to-ports <port>[<port>]
指定使用的目的端口或端口范围:不指定的话,目标端口不会被修改。只能用于指定了-p tcp 或 -p udp
的规则。
DIAGNOSTICS
诊断
不同的错误信息会打印成标准错误:退出代码0表示正确。类似于不对的或者滥用的命令行参数错误会返
回错误代码2,其他错误返回代码为1。
BUGS
臭虫
Check is not implemented (yet).
检查还未完成。
COMPATIBILITY WITH IPCHAINS
与ipchains的兼容性
iptables和Rusty Russell的ipchains非常相似。主要区别是INPUT 链只用于进入本地主机的包,而OUTPUT
只用于自本地主机生成的包。因此每个包只经过三个链的一个;以前转发的包会经过所有三个链。其他主
要区别是 -i 引用进入接口;-o引用输出接口,两者都适用于进入FORWARD链的包。当和可选扩展模块一
起使用默认过滤器表时,iptables是一个纯粹的包过滤器。这能大大减少以前对IP伪装和包过滤结合使用
的混淆,所以以下选项作了不同的处理:
-j MASQ
-M -S
-M -L
在iptables中有几个不同的链。

1  文件管理   #   ls   ls -a   列出当前目录下的所有文件,包括以.头的隐含文件         
   文件管理   #   ls   ls -l或ll   列出当前目录下文件的详细信息         
   文件管理   #   pwd   pwd   查看当前所在目录的绝对路经         
   文件管理   #   cd   cd ..   回当前目录的上一级目录         
   文件管理   #   cd   cd -   回上一次所在的目录         
   文件管理   #   cd   cd ~ 或 cd   回当前用户的宿主目录         
   文件管理   #   cd   cd ~用户名   回指定用户的宿主目录         
2  文件管理   #   mkdir   mkdir 目录名   创建一个目录         
   文件管理   #   mkdir   mkdir –p   递归式去创建一些嵌套目录         
   文件管理   #   rmdir   Rmdir 空目录名   删除一个空目录         
3  文件管理   #   rm   rm 文件名 文件名   删除一个文件或多个文件         
   文件管理   #   rm   rm -rf 非空目录名   递归删除一个非空目录下的一切,不让提式-f         
4  文件管理   #   cat   cat文件名   一屏查看文件内容         
5  文件管理   #   more   more文件名   分页查看文件内容         
6  文件管理   #   less   less 文件名   可控分页查看文件内容         
7  文件管理   #   grep   grep字符 文件名   根据字符匹配来查看文件部分内容         
8  文件管理   #   mv   mv 路经/文件  /经/文件   移动相对路经下的文件到绝对路经下         
   文件管理   #   mv   mv 文件名 新名称   在当前目录下改名         
9  文件管理   #   cp   cp /路经/文件  ./   移动绝对路经下的文件到当前目录下         
10 文件管理   #   find   find 路经 -name “字符串”   查找路经所在范围内满足字符串匹配的文件和目录         
11 文件管理   #   ln   ln 源文件 链接名   创建当前目录源文件的硬链接         
   ln /home/test /usr/test1   在/usr下建立/home/test的硬链接         
12   文件管理   #   ln   Ln -s a b   创建当前目录下a的符号链接b      
13   文件管理   #   touch   touch file1 file2   创建两个空文件         
14   磁盘管理   #   df   df   用于报告文件系统的总容量,使用量,剩余容量。         
15   磁盘管理   #   du   du -b /home   查看目前/HOME目录的容量(k)及子目录的容量(k)。         
16   磁盘管理   #   fdisk   fdisk -l   查看系统分区信息      
17   磁盘管理   #   fdisk   fdisk /dev/sdb   为一块新的SCSI硬盘进行分区      
18   磁盘管理   #   mkfs.ext3   Mkfs.ext3 /dev/sdb1
   为第一块SCSI硬盘的第一主分区格式化成
ext3的文件系统      
         mkfs.ext2   Mkfs.ext2/dev/sdb2    格式化成ext2文件系统      
19 磁盘管理   #   mount   mount -t 文件系统类型 设备路经  访问路经         
   磁盘管理   #      文件系统类型            
            Iso9660   光驱文件系统         
            vfat   Fat文件系统(windows)         
   挂载光驱   #   mount –t iso9660 /dev/cdrom /mnt/cdrom           
   挂载FAT   #   mount –t vfat /dev/hda5 /mnt/cdrom    挂第一个ide的第五个逻辑分区      
17 磁盘管理   #   Umount /mnt/cdrom     卸载/mnt/cdrom为空      
18 文件权限   #   chmod   chmod u+s file   为file的属主加上特殊权限         
            chmod g+r file   为file的属组加上读权限         
            chmod o+w file   为file的其它用户加上写权限         
            chmod a-x file   为file的所有用户减去执行权限      
   chmod 765 file  为file的属主设为完全权限,属组设成读写权,其它用户具有读和执心权限      
19   文件权限   #   chown   chown root /home   把/home的属主改成root用户      
20   文件权限   #   chgrp   chgrp root /home   把/home的属组改成root组      
21   打印管理   #   redhat-config-printer-tui   进入安装打印机界面         
22   打印管理   #   lp   lp –d hptr file   打印file到hptr的打印机上         
23   打印管理   #   lpq   Lpq –P 打印机名   查看打印机的状态         
24   打印管理   #   lprm   Lprm –P 打印机名 a   删除打印机内的打印作业         
25   打印管理    #   disable   Disable –r “changing paper” HPtr    禁用打印机并提示原因      
26   打印管理   #   enable   Enable HPtr   重新启用被禁用的         
27   用户管理   #   useradd   Useradd   创建一个新的用户         
28   用户管理   #   groupadd   Groupadd 组名   创建一个新的组         
29   用户管理   #   passwd   Passwd 用户名   为用户创建密码         
30   用户管理   #   Passwd -d   Passwd -d用户名   删除用户密码也能登陆         
31   用户管理   #   Passwd -l   Passwd -l用户名   锁定账号密码         
32   用户管理   #   Passwd -u   Passwd -u用户名   解锁账号密码         
33   用户管理   #   Passwd -S   Passwd -S用户名   查询账号密码         
34   用户管理   #   Usermod -l   Usermod -l 新用户名 老用户名   为用户改名         
35   用户管理   #   Usermod -L   Usermod -L 要锁定用户名   锁定用户登陆         
36   用户管理   #   Usermod -U   Usermod –U解锁用户名   解锁用户登陆         
37   用户管理   #   Usermod -u   Usermod –u 501用户名   改变用户UID         
38   用户管理   #   Userdel   Userdel–r 用户名   删除用户一切         
39   用户管理   #   Groupmod -n   Groupmod –n新用户名 老用户名   为组改名         
40   用户管理   #   Groupmod -g   Groupmod –g 501 组名   改变组GID         
41   用户管理   #   groupdel   Groupdel组名    先应删它的用户   删除组         
42   用户管理   #   gpasswd -a   gpasswd -a 用户名 组名   增加用户到组         
43   用户管理   #   Id    id   用户名   查用户信息         
44   软件管理   #   rpm -qa   rpm –qa | less   查询已安装RPM         
45   软件管理   #      rpm –qa | grep ftp   查询指定RPM         
46   软件管理   #   rpm -q   rpm -q 已安装的RPM包   查是否安装         
47   软件管理   #      rpm -q telnet-server   查看telnet服务器包      
48   软件管理   #   rpm -qi   rpm –qi 软件包名称   查看软件的描述信息      
49   软件管理   #   rpm -ql   rpm –ql软件包名称   查询软件包的文件列表      
50   软件管理   #   rpm -qf   rpm –qf软件包名称   查询某个文件所属的软件包      
51   软件管理   #   rpm -qp   rpm –qp软件包全名   查询未安装的软件包信息      
52   软件管理   #   rpm -e   rpm –e 软件包名称   删除具体的软件包      
53   软件管理   #   rpm -U   rpm –Uvh软件包全名   升级软件包并显示过程      
54   软件管理   #   rpm -ivh   rpm –ivh 软件包全名   安装软件包并显示过程      
55   软件管理   #   rpm -V   rpm –V软件包名称   验证软件包的大小,类型等      
56   软件管理   #   tar    -c 创建包 –x 释放包  -v 显示命令过程 –z 代表压缩包      
57   软件管理   #   tar -cf   tar –cvf benet.tar /home/benet   把/home/benet目录打包      
58   软件管理   #   tar -czf   tar –zcvf benet.tar.gz /mnt   把目录打包并压缩      
59   软件管理   #   tar –tf   tar –tf benet.tar   看非压缩包的文件列表      
60   软件管理   #   tar –tzf   tar –tf benet.tar.gz   看压缩包的文件列表      
61   软件管理   #   tar –xf   tar –xf benet.tar   非压缩包的文件恢复      
62   软件管理   #   tar –zxvf   tar –zxvf benet.tar.gz   压缩包的文件解压恢复      
63   软件管理   #   tar -jxvf   tar –jxvf benet.tar.bz2         
64   软件管理   #   diff   diff file1 file2 > 补丁名.patch   为新旧文件生成补丁文件      
65   软件管理   #   diff   diff file1 file2   比较两个文件的区别      
66   软件管理   #   Patch    Patch file补丁名.patch   打补丁      
67   软件管理   #   ./configure  –prefix=/usr/local/   编译前配置      
68   软件管理   #   make   编译      
69   软件管理   #   make install   安装编译好的源码包      
70   启动管理   #   reboot   Init 6   重启LINUX系统      
71   启动管理   #   Halt   Init 0   Shutdown –h now   关闭LINUX系统      
72   启动管理   #   runlevel      显示系统运行级      
73   启动管理   #   Init [0123456]       改变系统运行级,7种      
74   启动管理   #   Chkconfig –-list [服务名称]   查看服务的状态      
75   启动管理   #   Chkconfig –-level <运行级> <服务名> on|off|set    设置服务的启动状态      
76   启动管理   #   Chkconfig <服务名> on|off|set   设置非独立服务启状态      
77   进程管理   #   Top动态   Ps-aux静态   进程树pstree    查看系统进程      
78   进程管理   #   程序名 &   后台运行程序         
79   进程管理   #   fg   把后台运行的进程调回前台         
80   进程管理   #   bg   把前台运行进程调到后台         
81   进程管理   #   renice   Renice +1 180    把180号进程的优先级加1      
82   进程管理   #   kill   Kill PID    终止某个PID进程      
83   进程管理   #   at   at 5pm + 3 days
/bin/ls   指定三天后下午5:00执行/bin/ls   
   
84   进程管理   #   crontab   Crontab -e   用VI的形式来编辑自动周期性任务     
85   进程管理   #   crontab   Crontab -l   查看自动周期性任务     
86   进程管理   #   crontab   Crontab -r   删除自动周期性任务     
87   进程管理   #   crond   Service crond <start|stop|restart|status>     
   马上启动自动周期性服务   Service crond <启动|停止|重启|状态>     
           
   实现磁盘配额   (注安装LINUX时建立/home分区)
目标:对用户zhao在/home目录上实现soft limit为5k,hard limit 为10k的磁盘配额
实现步骤:
1. 修改包含/home的行,  #vi /etc/fstab, 改为:defaults,usrquota。也就是增加usrquota项。然后保存退出。
2、卸载/home目录                           #umount /home
3. 挂接/home目录                           #mount /home
4、增加用户zhao                            #useradd zhao
5、修改密码                                #passwd zhao
6、生成关于/home目录的quota信息           # quotacheck -cmug /home
                                       #quotacheck -vu /home
7、查看所有用户的信息                       #repquota -au
8、设置配额                                 #edquota -u zhao
将soft 和hard 分别改为5和10
9、保存并退出                               #wq!
10、修改时间                                #edquota -t
11、                                        #wq!
12.开启/home上的磁盘配额功能                #quotaon /home
13.查询配额                                 #quota -u zhao
14.验证配额                                 #su – zhao
                               $touch myfile
ps aux 察看系统进程

eject

功能说明:退出抽取式设备。

语  法:eject [-dfhnqrstv][-a <开关>][-c <光驱编号>][设备]

补充说明:若设备已挂入,则eject会先将该设备卸除再退出。

参  数:
  [设备]   设备可以是驱动程序名称,也可以是挂入点。
  -a<开关>或–auto<开关>   控制设备的自动退出功能。
  -c<光驱编号>或–changerslut<光驱编号>   选择光驱柜中的光驱。
  -d或–default   显示预设的设备,而不是实际执行动作。
  -f或–floppy   退出抽取式磁盘。
  -h或–help   显示帮助。
  -n或–noop   显示指定的设备。
  -q或–tape   退出磁带。
  -r或–cdrom   退出光盘。
  -s或–scsi   以SCSI指令来退出设备。
  -t或–trayclose   关闭光盘的托盘。
  -v或–verbose   执行时,显示详细的说明。

2007年06月24日

篇文章针对那些希望利用ftp协议和朋友们共享文件的人们,就像windows下的FTPserU,我提供的方式不是唯一的,希望我的方法足够清晰.这个FTPserver只允许拥有正确密码的人使用,所以你要明白只有已知的用户才能读取你的FTP服务.

1- 使用下面的命令安装proftpd:

sudo apt-get install proftpd

2- 在etc/shells 加入如下代码 (sudo gedit /etc/shells to open the file)(译注:命令行模式下sudo vi /etc/shells) :

/bin/false

新建一个 /home/FTP-shared 目录 :

cd /homesudo mkdir FTP-shared

创建一个只能用来读取ftp的用户userftp. 这个用户不需要有效的shell(更安全) ,所以选择 /bin/false shell 给 userftp , /home/FTP-shared 作为主目录.

为了是这部分更清楚,我给取此操作的命令行:

sudo useradd userftp -p your_password -d /home/FTP-shared -s /bin/false

在FTP-shared 目录下新建一个download和一个upload 目录:

cd /home/FTP-shared/sudo mkdir downloadsudo mkdir upload

现在我们来给它们设置相应的权限:

cd /homesudo chmod 755 FTP-sharedcd FTP-sharedsudo chmod 755 downloadsudo chmod 777 upload

3- 好了,现在进入proftpd的配置文件:

sudo gedit /etc/proftpd.conf

当然你可以按你的需要编辑你自己的proftpd.conf:

# To really apply changes reload proftpd after modifications.AllowOverwrite onAuthAliasOnly on

# Choose here the user alias you want !!!!UserAlias sauron userftp

ServerName   "ChezFrodon"ServerType    standaloneDeferWelcome   on

MultilineRFC2228 onDefaultServer   onShowSymlinks   off

TimeoutNoTransfer 600TimeoutStalled 100TimeoutIdle 2200

DisplayFirstChdir               .messageListOptions                 "-l"

RequireValidShell   off

TimeoutLogin 20

RootLogin    off

# It's better for debug to create log files ;-) ExtendedLog    /var/log/ftp.logTransferLog    /var/log/xferlogSystemLog   /var/log/syslog.log

#DenyFilter   \*.*/

# I don't choose to use /etc/ftpusers file (set inside the users you want to ban, not useful for me)UseFtpUsers off

# Allow to restart a downloadAllowStoreRestart  on

# Port 21 is the standard FTP port, so don't use it for security reasons (choose here the port you want)Port    1980

# To prevent DoS attacks, set the maximum number of child processes# to 30.  If you need to allow more than 30 concurrent connections# at once, simply increase this value.  Note that this ONLY works# in standalone mode, in inetd mode you should use an inetd server# that allows you to limit maximum number of processes per service# (such as xinetd)MaxInstances 8

# Set the user and group that the server normally runs at.User                  nobodyGroup                 nogroup

# Umask 022 is a good standard umask to prevent new files and dirs# (second parm) from being group and world writable.Umask    022 022

PersistentPasswd  off

MaxClients 8MaxClientsPerHost 8MaxClientsPerUser 8MaxHostsPerUser 8

# Display a message after a successful loginAccessGrantMsg "welcome !!!"# This message is displayed for each access good or notServerIdent                  on       "you're at home"

# Set /home/FTP-shared directory as home directoryDefaultRoot /home/FTP-shared

# Lock all the users in home directory, ***** really important *****DefaultRoot ~

MaxLoginAttempts    5

#VALID LOGINS<Limit LOGIN>AllowUser userftpDenyALL</Limit>

<Directory /home/FTP-shared>Umask 022 022AllowOverwrite off <Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD> DenyAll </Limit></Directory>

<Directory /home/FTP-shared/download/*>Umask 022 022AllowOverwrite off <Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD> DenyAll </Limit></Directory>

<Directory> /home/FTP-shared/upload/>Umask 022 022AllowOverwrite on <Limit READ RMD DELE>       DenyAll     </Limit>

     <Limit STOR CWD MKD>       AllowAll     </Limit></Directory>

好了,你已经完成了proftpd的配置,你的服务端口是1980,而读取的参数如下,用户:sauron,密码:你为userftp设置的那个.

4- 启动/停止/重启动你的服务:

sudo /etc/init.d/proftpd startsudo /etc/init.d/proftpd stopsudo /etc/init.d/proftpd restart

对你的proftpd进行一下语法检查:

sudo proftpd -td5

想知道谁现在连接到你的服务,用ftptop命令(使用字母”t”来转换显示频率),你也可以使用”ftpwho”命令.