linux 完整学习资料:第四章 分区+路由

--





静态路由:



真实机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--就可以发了










你可能感兴趣的:(路由:)