--
静态路由:
真实机A 虚拟机B 虚拟机C 虚拟机D
eth0 eth1 --》 eth0 eth1
10.1.1.35 2.2.2.2 <-- 2.2.2.3 4.4.4.4
ip_forward ip_forward
vmnet1 eth0 eth1 eth0
1.1.1.1 --》 1.1.1.2 3.3.3.3 <--- 3.3.3.4
SIP:1.1.1.1
DIP:4.4.4.4
linux默认是只能用一个网关,你可以设定多个网关,但默认只用上面的那个
但是linux的策略路由,是可以实现多个网关都能用的
--下面这种情况,就是只有使用172.16.2.1这个网关
0.0.0.0 172.16.2.1 0.0.0.0 UG 0 0 0 br0
0.0.0.0 1.1.1.2 0.0.0.0 UG 0 0 0 vmnet1
--上面的图架构四台机全物理连接在同一个网络(都在虚拟机的vmnet1网络),掩码都为24位
真实机A虚拟1.1.1.1
[root@a ~]# ifconfig vmnet1 1.1.1.1 netmask 255.255.255.0
虚拟机B两张网卡
ifconfig eth0 1.1.1.2 netmask 255.255.255.0
ifconfig eth1 2.2.2.2 netmask 255.255.255.0
真实机A ping 1.1.1.2 能通
真实机A ping 2.2.2.2 不能通
在A上route -n 查看路由表,没有2.2.2.0网段的路由条目
--与2.2.2.2通迅,首先会去查看路由表,如果有对应的网段的条目,就会按照条目所指的网卡路由出去;如果没有对应的网段的条目,则全部从网关出去。如果都没有,则报网络不可达
解决方法两种:
1,真实机A上加路由
# route add -net 2.2.2.0 netmask 255.255.255.0 dev vmnet1
--这一句命令表示加一个2.2.2.0/24的路由条目,并指定此网段路由从vmnet1出入
2,真实机A指网关
# route del -net 2.2.2.0 netmask 255.255.255.0 dev vmnet1
--先清除上面加的路由
# route add default gw 1.1.1.2 --把网关指向1.1.1.2,网关不要指多条
------------------------
虚拟机C配置IP
ifconfig eth0 2.2.2.3netmask 255.255.255.0
ifconfig eth1 3.3.3.3netmask 255.255.255.0
在真实机A上
ping 2.2.2.3 不能通
--因为可以ping过去,但回不来
解决方法1:
在虚拟机C上加一条1.1.1.0网段的路由
route add -net 1.1.1.0 netmask 255.255.255.0 dev eth0
解决方法2:
在C上先把方法1加的路由删除
route del -net 1.1.1.0 netmask 255.255.255.0 dev eth0
在C上加一个网关指向2.2.2.2
route add default gw 2.2.2.2
在A上ping 2.2.2.3 还是不通
需要再在虚拟机B上打开IP转发功能
临时方法
# echo 1 > /proc/sys/net/ipv4/ip_forward
永久方法
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 --把这个值改为1
# sysctl -p --保存后使用此命令使之生效
--加了IP转发功能之后,1.1.1.1网关指向1.1.1.2,并且同时2.2.2.3网关要指向2.2.2.2才可以通
=============================
ping 10.1.1.192--直接ping一个IP 测试是否能通
ping -c 4 10.1.1.192--只PING 4个包
cat /proc/cpuinfo
cat /proc/meminfo
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux
[root@localhost ~]# uname -r
2.6.18-164.el5--内核版本
[root@li ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
--操作系统版本,有时候会去修改用于安装软件时版本不兼容时的一个欺骗安装
[root@li ~]# ls /usr/src/kernels/2.6.18-164.el5-i686/
--内核源代码的路径
[root@localhost ~]# uname -m
i686
[root@localhost ~]# ls /lib/modules/`uname -r`
修改主机名三步:
hostname li.cluster.com--临时修改当前主机名
vim /etc/sysconfig/network--系统全局的网络配置文件
HOSTNAME=li.cluster.com--永久修改当前主机名FQDN(full qualified domain name)有些软件是要求主机名为fqdn格式,例如apache
vim /etc/hosts
10.1.1.35 li.cluster.com --在这里加上修改过的主机和IP对应
-------------------------------------------------
ssh - OpenSSH SSH client (remote login pro-
gram)
ssh security shell
# /etc/init.d/sshd restart
# /etc/init.d/sshd status
openssh-daemon (pid 3161) is running...
# netstat -ntlup |grep :22
tcp 0 0 :::22 :::* LISTEN 3161/sshd
端口 1-65535
1-1024 注册端口
1024-65535随机端口
监听
# vim /etc/services
[root@localhost ~]# ssh 10.1.1.172
[root@localhost ~]# ssh zhou.139.com--也可以ssh接主机名,但要求/etc/hosts里有对应
[root@localhost ~]# ssh 10.1.1.104--默认以当前用户远程登陆
The authenticity of host '10.1.1.104 (10.1.1.104)' can't be established.
RSA key fingerprint is b1:70:27:ac:ad:f6:ab:35:00:5a:b7:ad:ad:e4:43:0a.
Are you sure you want to continue connecting (yes/no)? yes --第一次远程登陆会让你输入yes,因为它会加一个RSA值到/root/.ssh/known_hosts文件里,下次再ssh这台机,就不用再输入yes了
10.1.1.104 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA/HQMabL2hR0qKrNxJU34WWLvKjnjT9FFbRYk5EcsZMNAFR+k0sXUT8YjSRNiAQlRfWNRp8Wbxh7XGvQ9YJpzxxkQA9LP+W/O4e+2TMKt3vfDLP0M6SWuykQ+aChpQokXouNGZsHo3Y1xa7ysgvV4CVAl6ItxjdeKkCy2oiArggnIiKYVtFg20Y44SzxH7ycdnLdj09ftIsZZlkC1Bld4x1i5QUmUkzJEgHsLj0rpe4U8gfbrhJw5m02Y6cE655XPpFxuP7VF/L8a8i0+SEKgwO8FfSUngKfn2YjKlgXKstyVJvK+nCKXRT6XNTNE5f5uSUIcEsWrTn+OPKfoClpJew==
[root@localhost ~]# ssh 10.1.1.104
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
7f:7b:7e:55:bf:28:4b:be:34:22:1c:42:39:cc:f8:ff.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:6
RSA host key for 10.1.1.104 has changed and you have requested strict checking.
Host key verification failed.
--遇到此报错,有可能是因为104的IP被另一台电脑使用,就把/root/.ssh/known_hosts里关于104电脑的RSA KEY信息给删除掉 就可以再加了
[root@localhost ~]# su - user1
[user1@li ~]$ ssh 10.1.1.172--如果本机有user1,可以使用user1直接ssh,就是连接对方的user1
[root@localhost ~]# ssh [email protected]--也可以这样去连user1,最主要是对方要有user1用户,本机有没有user1不必要
[root@li ~]# ssh 2.2.2.171 -l user1 --还有一种 使用-l参数
[root@localhost ~]# ssh 10.1.1.172 date --调对方的命令
[email protected]'s password:
hello ,this is root
2011年 03月 08日 星期二 14:34:22 CST
[root@li ~]# ssh 10.1.1.220 -X system-config-date--调有关图形,需要加-X
ssh 10.1.1.104 -Y --登陆到104的主机后,可以任意调用图形
调图形要注意的是远程服务器要图形支持
[root@li ~]# xhost +--让所有普通用户可以使用图形
# xhost + 10.1.1.110
10.1.1.110 being added to access control list
====================================
[root@li ~]# scp /share/soft/iso/rhel-5.4-server-i386-dvd.iso 10.1.1.220:/root/Desktop/
[root@li ~]# scp -r /share/soft/iso/ 10.1.1.220:/root/Desktop/
scp 10.1.1.104:/root/Desktop/sn.txt /root/Desktop/ --从远端拷到本端
scp -r 10.1.1.104:/root/Desktop/ /root/Desktop/ --拷目录也要加-r参数
scp -r aaa.bb.com:/root/Desktop/ /root/Desktop/--可以用主机名替代IP,但要写到/etc/hosts里
[root@li Desktop]# scp /usr/src/kernels/2.6.18-164.el5-i686/drivers/net/arm/Makefile 10.1.1.172:/usr/src/kernels/2.6.18-164.el5-i686/drivers/net/arm/
--把上面的命令转换为下面拷贝方法
[root@li Desktop]# cd /usr/src/kernels/2.6.18-164.el5-i686/drivers/net/arm/
[root@li arm]# scp Makefile 10.1.1.172:`pwd`/
[root@li ~]# scp 10.1.1.110:/etc/fstab 10.1.1.133:/root/Desktop/
--也可以这样写把110的拷给133。但需要输入他们两个人的密码
=========================================================
windows下的远程ssh工具有很多,常用的有securityCRT , putty等
=========================================================
netstat -nt
netstat -ntl
netstat -ntlup
-n 以数字显示
-t 显示tcp连接
-l 显示监听
-u 显示udp连接
-p 显示连接的program 程序
[root@li ~]# netstat -ntlup |grep 80
tcp 0 0 :::80 :::* LISTEN 2868/httpd
# netstat -nt |grep 5900 --查看连接我的vnc的信息
# netstat -nt |grep 5900 |wc -l --查看连接我的vnc有多少个连接
# vim /etc/services --nestat -ntl查看的是你现在电脑上开放和监听哪些端口,如果端口不熟悉,可以对照services这个文件去查看
网络连接:比如连web服务
客户端的随机端口-->服务器的80 -->服务器由80回给客户端的那个随机端口
===========================================================
磁盘管理
3primary + 1 extended (在扩展分区内部分多个logical扩展分区)
MBR (master bootloader record,主引导记录) 446(启动设备)+ 64(分区表)+2(结束位)=512个字节
64 个字节 16个字节存放一个分区,最多存放4个分区
[root@li ~]# fdisk -l
Disk /dev/sda: 320.0 GB, 320072933376 bytes --磁盘名,大小
255 heads, 63 sectors/track, 38913 cylinders--多少柱面
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux-- *代表引导
/dev/sda2 14 523 4096575 82 Linux swap / Solaris
/dev/sda3 12762 17860 40957717+ 83 Linux
/dev/sda4 17861 38913 169108222+ 5 Extended--扩展分区的end值最好要等于前面的柱面值,才表示磁盘利用完
/dev/sda5 17861 20410 20482843+ 83 Linux--逻辑扩展分区的范围在扩展分区内
/dev/sda6 20411 21685 10241406 83 Linux
/dev/sda7 22196 31922 78132096 83 Linux
/dev/sda8 31923 38913 56155176 83 Linux
fdisk /dev/sda
Command (m for help): m
Command action
a toggle a bootable flag--表示一个分区作为引导分区
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition--删除一个分区
l list known partition types--列出已知的分区类型
m print this menu
n add a new partition--增加一个分区
o create a new empty DOS partition table
p print the partition table--打印当前的分区表
q quit without saving changes--不保存退出
s create a new empty Sun disklabel
t change a partition's system id--改变分区类型ID值
u change display/entry units
v verify the partition table
w write table to disk and exit--保存退出
x extra functionality (experts only)
c FAT32
5 extend
7 NTFS
83 ext3
82 swap 交换分区
8e Linux LVM
fd Linux raid auto
Command (m for help): n
First cylinder (21699-38913, default 21699): --直接回车就是默认从21699柱面开始分
Using default value 21699
Last cylinder or +size or +sizeM or +sizeK (21699-22195, default 22195): +200M--这里M大小写无所谓
Command (m for help): w --确认后,按w保存
[root@li etc]# partprobe 刷新到磁盘分区表
partprobe - inform the OS of partition table changes
--这里要注意的是:rhel5下使用partprobe,但rhel6下要使用下面的命令
# partx -a /dev/sda
mkfs -t ext4 /dev/sda9 格式化
mkfs -t ext4 -b 8192 /dev/sda9--格式化,并把块大小由默认的4096改成8192,非特殊情况不要这么做
mkfs.ext4 /dev/sda9
mkfs /dev/sda9--直接这样格式化,默认格成ext2
mkfs -t vfat /dev/sda9 --格成fat32
格式化后挂载使用就可以了
--建议rhel6就格式化成ext4
==========================
--注意:system id和格式化的文件系统类型不一定一致
实验一:
验证分了四个主分区后,就不能再分区了
实验二:
验证扩展分区不用光所有剩余空间会造成浪费
实验三:
验证一个磁盘最多只能分15个分区
--rhel6里可以越过15个分区的限制
=============================================
[root@li fdisk]# umount /fdisk/--umount 时报busy的错误,一般是因为有程序占用,最常见的就是bash占用,要先cd出来,再umount
umount: /fdisk: device is busy
umount: /fdisk: device is busy
--如果cd出来了,umount时还是报busy错误,尝试一下下面两条命令
[root@li /]# lsof /fdisk/
[root@li /]# fuser -k /fdisk/
--同一个目录,可以mount多个分区,但是只显示最后一次mount的分区的内容,umount的话,就要一级一级的umount
--挂载不要挂载重要的目录,一般只挂到/mnt/,/misc/,/media/或自定义创建的空目录等
mount的用法
挂载远程的NFS共享目录
mount 10.1.1.35:/share/soft/ /fdisk/
挂载光盘 要加-o loop
mount /share/iso/rhel-5.4-server-i386-dvd.iso /mnt/ -o loop
mount -o loop /share/iso/rhel-5.4-server-i386-dvd.iso /mnt/
针对分区类型挂载
mount -t vfat /dev/sda10 /mnt
mount -t cifs /dev/sda10 /mnt
mount.ntfs-3g /dev/sdb1 /mnt --挂载ntfs格式(需要先安装相关软件包)
--cifs common internet file system windows网络邻居共享使用的就是此协议
mount 的特殊用法:
--当你装了两个linux系统在同一台机器上,进入其中一个系统,看不到另一个系统的文件信息,但是可以看到它的分区 ,可以在当前系统建立一个目录,把另一个系统的分区mount过来,就可以使用另一个系统的文件了
--直接把windows的共享目录给mount过来
mount -t cifs -o username=administrator //10.1.1.161/knk /mnt
这样使用的要注意的是 用户名别打错了 共享名尽量简单 windows防火墙要关闭 guest用户要打开
----------------
双系统,两个系统的分区可以直接挂载过来进行文件的修改和拷贝
=============================================================
建立一个swap分区
[root@li ~]# free -m
total used free shared buffers cached
Mem: 2017 964 1052 0 123 529
-/+ buffers/cache: 312 1705
Swap: 4000 0 4000--这里
用fdisk 新建出一个分区 我这里是一G大小(注意分区ID值为82)
[root@li ~]# mkswap /dev/sda12 --格式为swap分区类型
Setting up swapspace version 1, size = 1011671 kB
[root@li ~]# swapon /dev/sda12 --使之生效
[root@li ~]# free
total used free shared buffers cachedfs
Mem: 2065980 989096 1076884 0 126236 542432
-/+ buffers/cache: 320428 1745552
Swap: 5084520 0 5084520
[root@li /]# swapoff /dev/sda12--使之失效
[root@li /]# free
total used free shared buffers cached
Mem: 2065980 2010728 55252 0 9596 1710824
-/+ buffers/cache: 290308 1775672
Swap: 4096564 136 4096428
另一种方法:
[root@li /]# dd if=/dev/zero of=/swapfile bs=1M count=1000 --用dd命令创建出一个1000M大小的文件,此文件为二进制文件,不能cat或者vi去看
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 4.40506 seconds, 238 MB/s
[root@li /]# mkswap /swapfile
Setting up swapspace version 1, size = 1048571 kB
# swapon /swapfile
[root@li /]# free
total used free shared buffers cached
Mem: 2065980 1998744 67236 0 9940 1683508
-/+ buffers/cache: 305296 1760684
Swap: 5120556 136 5120420
--swap有两种方式:一种是分区,一种是文件(分区更有效,man fdisk第二段英文里有说明)
=============================================================
/etc/fstab
设置开机后自动挂载目录
[root@li ~]# cat /etc/fstab
LABEL=/1 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0--在内存上挂载,内存文件系统
devpts /dev/pts devpts gid=5,mode=620 0 0--虚拟终端
sysfs /sys sysfs defaults 0 0--内存信息的反应
proc /proc proc defaults 0 0--虚拟目录,都是系统正在运行的信息
LABEL=SWAP-sda2 swap swap defaults 0 0
/dev/sda6 /notes ext3 defaults 0 0
/dev/sda7 /share ext3 defaults 0 0
分区号或者标签号挂载点挂载类型 挂载参数 是否扫描 扫描级别
加上下面一句让/dev/sda9开机后自动挂载到/fdisk
/dev/sda9 /fdisk ext3 defaults 0 0
e2label /dev/sda9 dev9--给/dev/sda9 做一个标签
挂载参数
defaultsrw,suid,dev,exec,auto,nouser,async --man mount查看
--rhel6下defaults里还多包含
rw 读写 ro 只读
suid setuid和setgid生效
dev 允许c类型和b类型的设备文件
exec 允许二进制文件的执行
auto 能够使用-a参数挂载 使用mount -a 可以把fstab里的所有的自动再挂一次
nouser禁止普通用户挂载文件系统
async异步
sync同步
fs
mount -o remount,rw,noexec /--不要在真实机上用
===========================================================
如何把
mount 10.1.1.35:/share/iso/ /mnt 写到fstab里
vim /etc/fstab
10.1.1.35:/share/iso//mntnfs defaults 0 0
--但不建议这样做,因为如果35没开机,或先关机,都会出现问题
autofs 自动挂载服务
mount -a 把fstab里写的的重挂载一次,可以测试一下fstab是否写错,以防开机开不了fs
/etc/mtab --直接输入mount命令显示的信息来源于此
=================================================
实验一:
把/etc/fstab里开机扫描的分区(也就是第五列不为0的分区)写错的情况:
开机不能进系统
输入root密码
repair system # mount -o rw,remount /
repair system # vim /etc/fstab --再去修改,重启系统就可以了
--注意fstab文件里的各种错误会造成的情况也不相同
实验二:
mv一下/etc/fstab
开机可以进入系统
进入后错误很多,有可能终端打不开
解决:使用文本tty模式,mv回来再重启,就可以了
--rhel6版本下,可以进入系统,终端也可以打开,用df -h查看,根都没挂载,但却可以用
==================================
在线用户管理命令
users
who
w
whoami
[root@li ~]# who
root :0 2011-04-19 09:38
root pts/1 2011-04-19 09:39 (:0.0)
root pts/2 2011-04-19 09:39 (:0.0)
[root@li ~]# w
09:44:01 up 6 min, 3 users, load average: 0.68, 0.46, 0.20
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 - 09:38 ?xdm? 2:15 0.06s /usr/bin/gnome-se
root pts/1 :0.0 09:39 0.00s 0.05s 0.00s w
root pts/2 :0.0 09:39 4:53 0.01s 0.01s bash
===========================
last 显示登录成功的日志,读取的是/var/log/wtmp
[root@li ~]# file /var/log/wtmp
/var/log/wtmp: data
strings /var/log/wtmp
lastb 显示登录失败的日志,读取的是/var/log/btmp
[root@li ~]# file /var/log/btmp
/var/log/btmp: DBase 3 index file
lastloglastlog显示是不同的用户最后一次登录的信息
[root@li ~]# file /var/log/lastlog
/var/log/lastlog: data
wall
write
对单用户的通知,可以使用w查看在哪里登录,然后重定向给它信息
echo "hello" > /dev/pts/2
write 单独对一个用户写信息
write user [ttyname]
在文本模式下做如下操作 :
ctrl+alt+F1 登录root(tty1) ctrl+alt+F2登录abc(tty2)
在第一个终端tty1
write abc tty2
hello abc
ctrl+d--ctrl+d结束
--在文本模式下如果显示翻上去的页面 shift+pageup 向下shift+pagedown
--在bash下查找以前使用的很长的命令 ctrl+shift+R
# mesg y
# mesg--改为y
is y
# write root pts/2--就可以发了