目录
四、man、who、whoami、ssh-keygen、useradd、passwd等命令
一、Linux中Swap与Memory的区别
1、介绍
对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存的造价是要高于磁盘的,虽然相对来说价格一直在降低。
当内存没有可用的,就必须要把内存中不经常运行的程序给踢出去。但是踢到哪里去,这时候swap就出现了。swap全称为swap place,即交换区,当内存不够的时候,被踢出的进程被暂时存储到交换区。当需要这条被踢出的进程的时候,就从交换区重新加载到内存,否则它不会主动交换到真实内存中。
2、总结
计算机对内存分为物理内存与虚拟内存(注意虚拟内存和虚拟地址空间的区别)。物理内存就是计算机的实际内存大小,由RAM芯片组成的。虚拟内存则是虚拟出来的、使用磁盘代替内存。虚拟内存的出现,让机器内存不够的情况得到部分解决。当程序运行起来由操作系统做具体虚拟内存到物理内存的替换和加载(相应的页与段的虚拟内存管理)。这里的虚拟内存即所谓的swap。
所以,swap其实就是用的磁盘存储,但是通过虚拟化成虚拟内存,解决内存不够用的问题。如果内存无限大,swap就不存在了。
二、ll命令
ll并不是linux下一个基本的命令,它实际上是ls -l的一个别名。
ll命令结果说明
drwxr-xr-x 2 root root 48 2013-11-27 16:34 test/
第一个栏位,表示文件的属性。Linux的文件基本上分为三个属性:可读(r),可写(w),可执行(x)。
这里有十个格子可以添(具体程序实现时,实际上是十个bit位)。
第一个字母表示文件类型,
”-”,普通文件,也就是平常我们vim创建的文件。
”d”目录,字母”d”,是dirtectory(目录)的缩写.
“l”符号链接。请注意,一个目录或者说一个文件夹是一个特殊文件,这个特殊文件存放的是其他文件和文件夹的相关信息.
“b”块设备文件。
“c”字符设备文件。
紧接着的3*3个字符分3组,各指示此文件的读、写、执行权限,对于owner、group、others而言。 因为Linux是多用户多任务系统,所以一个文件可能同时被许多人使用,所以我们一定要设好每个文件的权限,其文件的权限位置排列顺序是(以-rwxr-xr-x为例): rwx(Owner)r-x(Group)r-x(Other) 这个例子表示的权限是:使用者自己可读,可写,可执行;同一组的用户可读,不可写,可执行;其它用户可读,不可写,可执行。
第二个栏位,表示文件个数。如果是文件的话,那这个数目自然是1了,如果是目录的话,那它的数目就是该目录中的文件个数了。
第三个栏位,表示该文件或目录的拥有者。若使用者目前处于自己的Home,那这一栏大概都是它的账号名称。
第四个栏位,表示所属的组(group)。每一个使用者都可以拥有一个以上的组,不过大部分的使用者应该都只属于一个组,只有当系统管理员希望给予某使用者特殊权限时,才可能会给他另一个组。
第五栏位,表示文件大小。文件大小用byte来表示,而空目录一般都是1024byte,当然可以用其它参数使文件显示的单位不同,如使用ls –k就是用kb莱显示一个文件的大小单位,不过一般我们还是以byte为主。
第六个栏位,表示最后一次修改时间。以“月,日,时间”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。
第七个栏位,表示文件名。我们可以用ls –a显示隐藏的文件名。
三、linux与centos的关系
完整的操作系统主要分3个部分,分别是:内核、库、应用程序
内核:主要管理与硬件的直接交互的原语代码就类似dao层的一个方法,是原子性的。
库:是对内核的进一步封装。当一个功能需要多个原语时,就比如有的程序,需要键盘的输入,还需要显示器的显示,就可以调用库中的封装好的方法;
应用程序:是系统级的应用程序,直接调用库中的方法。
Linux从开发出来就只是内核部分,但开放源码。所以centos厂家就自己写库和应用程序部分,衍生出各种版本,除此之外还有 redhat等。CentOS是GNU/Linux众多发行版的一种,他使用Linux内核外加一整套的介面,组成一个完整的可供使用的操作系统。
所以说Centos是基于Linux的。
所以我们一般看操作系统相关的信息一般是两个命令:
1、查看内核的:uname -a
如下截图显示:Linux weiwei-vm-dev-1aa9cbe27.qiyi.virtual 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
说明内核是Linux,内核发行版是3.10.0-957.el7.x86_64
2、查看操作系统的: cat /etc/redhat-release
如下显示:CentOS Linux release 7.6.1810 (Core) ,说明CentOS 版本号是7.6
四、man、who、whoami、ssh-keygen、useradd、passwd等命令
1、man:查看命令帮助信息
- man df:查看df命令的帮助文档
2、who
查看当前机器有几个登录用户,用什么方式登陆的
如下有两个客户端登陆,都是以root账号登陆
一个类型是pts/0,这是通过ssh方式登陆的
一个是tty1,这是通过百度云VNC登陆的。串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。
3、whoami:查看当前的登陆用户的账号
4、ssh-keygen:生成本机的公私钥,用作认证,标识自己身份的
5、useradd与passwd一起说
useradd:添加用户
如useradd weiweitest -p 12345678 -g 0:标识创建weiweitest账号,并设置登陆口令为12345678,将账号设置到编号为0(0一般表示root组)的组下(设置到组的目的主要是方便以组的方式管理用户的权限)
注意,以上命令有可能密码设置失败(但是可能提示成功),所以可能需要再次设置或修改密码,就用到了passwd命令
直接:passwd weiweitest,按回车就会提示输入两次密码了
五、关于ssh
1、介绍
ssh命令可通过key或者密码的方式登陆其他的服务器。
我们通过ssh-keygen命令生成好公钥和私钥之后,将公钥key加到其它机器上,就可以登陆其它机器,但是登陆其它机器是什么权限是由对方决定的,怎么决定的呢?
大致是这样:
服务器上可能有多个账号,每个账号都有~/.ssh/authorized_keys文件(root是默认创建,其它账号要自己创建文件),对方如果将你的key加到了/root/.ssh/authorized_keys中,你就有了root权限,如果加到/home/weiweitest/.ssh/authorized_keys中,你就有了weiweitest的权限
2、配置
key的话是直接可以登录的,不需要口令。
我们可以配置是否开启口令验证,即用户如果没有给key,用口令也能登陆。
假设ip为10.10.10.12
如果有key的话:ssh root@10.10.10.12就会直接登录到机器上
如果没有key的话,可以通过口令(前提是服务器运行口令登陆,即下面的sshd_config配置的)登陆,登陆方式仍然是:ssh root@10.10.10.12,回车后会让输入口令密码
是否开启ssh口令登陆(这个和vnc没关系哈,sshd_config 只能控制ssh登陆),即修改下面文件
vim /etc/ssh/sshd_config
可以将PasswordAuthentication设置为yes。
3、关于公私钥
公钥和私钥也就是非对称加密算法的实现,是对以前的对称加密(使用用户名与密码)方式的提高。
当使用非对称加密算法时,会生成两把配对的密钥:
- 其中一把由私人保管,必须非常小心保存,最好加上密码,无需传输,所以称为私钥,私钥主要是用来解密/签章的。
- 另一把对外公布,是给大家用的,本身就无需保密,称为公钥,公钥主要是用来加密/验章用的。
- 当你用了其中一把钥匙加密信息时,只有配对的另一把钥匙才能解密,所以公钥和私钥形成了唯一对应的关系。
- 非对称加密算法不能使用相同的密钥进行解密,也就是说公钥加密的只能使用私钥进行解密。
- 正是基于这种唯一对应的关系,非对称加密首先可以用来验证信息发送方的身份,另一个就是保密传输。
使用密钥进行ssh免密登录原理:
前提:客户端将公钥拷贝到SSH服务端
主机A(客户端)创建公钥私钥,并将公钥复制到主机B(被登陆机)的指定用户下,然后主机A使用保存私钥的用户登录到主机B对应保存公钥的用户。
交互流程:
-
客户端向目标服务器发送登录请求。在SSH 服务启用了证书验证登录方式后,会优先通过证书验证方式进行登录验证。
- 目标服务器根据 SSH 服务配置,在用户(即ssh 用户名@IP)对应目录及文件中读取到有效的公钥信息。
-
目标服务器生成一串随机数,然后使用相应的公钥对其加密。
-
目标服务器将加密后的密文发回客户端。
-
客户端使用指定的私钥解密,并将解密后的原文信息重新发送给目标服务器。
-
目标服务器对客户端返回的信息进行比对。如果比对成功,则表示认证成功,客户端可以登录。如果对比失败,则表示认证失败,则会继续尝试密码验证等其它方式进行登录校验。
六、Linux系统日志查看
Linux系统日志存放在/var/log中,比如对接百度云cloud-init的操作日志就放在这里,
即/var/log/cloud-init-output.log和/var/log/cloud-init.log
此目录下的文件列表如下:
/var/log/messages:包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
/var/log/dmesg: 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
/var/log/auth.log: 包含系统授权信息,包括用户登录和使用的权限机制等。
/var/log/boot.log:包含系统启动时的日志。
/var/log/daemon.log: 包含各种系统后台守护进程日志信息。
/var/log/dpkg.log:包括安装或dpkg命令清除软件包的日志。
/var/log/kern.log:包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog:记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
/var/log/mail.log: 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
/var/log/user.log:记录所有等级用户信息的日志。
/var/log/Xorg.x.log:来自X的日志信息。
/var/log/alternatives.log:更新替代信息都记录在这个文件中。
/var/log/btmp:记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
/var/log/cups:涉及所有打印信息的日志。
/var/log/anaconda.log:在安装Linux时,所有安装信息都储存在这个文件中。
/var/log/yum.log:包含使用yum安装的软件包信息。
/var/log/cron:每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
/var/log/secure:包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
/var/log/wtmp或/var/log/utmp:包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。执行last命令时,它会读取/var/log目录下名称为wtmp的文件,并把该文件记录的登录系统或终端的用户名单全部显示出来。默认显示wtmp的记录,btmp能显示的更详细,可以显示远程登录,例如ssh登录。
/var/log/faillog:包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
七、关于硬盘的一些概念
SATA和PCI-E和M.2,他们是接口,都是固态硬盘的接口。
然而其中SATA和PCI-E不仅仅指接口,这两个东西也另指“数据通道”,简单说就是数据从硬盘走到内存条的“路”,学名叫总线。
总线:相当于固态硬盘给内存条和CPU传送数据需要走的“路",这条路分为SATA总线和PCI-E总线
PCI-E通道就像是特别宽大的路,数据可以走的特别快,而SATA通道与之相比更像是一条崎岖的小路,数据走的特别慢,但是CPU内部就那么大一点,修不了特别多的大路,所以PCI-E通道也就仅有那么几条。
NVMe,其实NVMe跟AHCI都是一种规范,就像是在路上走如果没有交通规则的限制,那么肯定是一团拥挤肯定都走不动了,而NVMe跟AHCI就像是这种交通规则
总结:SATA、M.2、PIC-E其实可以说是插槽的形状,PCI-E和SATA是数据从硬盘到内存条走的通道,而NVME跟AHCI就是针对PCI-E跟SATA通道的“交通规则
raid卡:独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。
八、总线
计算机的总线分为:控制总线、数据总线和地址总线。
1、控制总线:主要用来传送控制信号和时序信号。
2、数据总线:是双向三态形式的总线,即它既可以把CPU的数据传送到存储器或输入输出接口等其它部件,也可以将其它部件的数据传送到CPU。
3、地址总线:是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)。
总线通信控制的四种方式:
1、 同步通信:由统一时标控制数据传送
2、异步通信:采用应答方式,没有公共时钟标准
3、半同步通信:同步、异步结合
4、分离式通信:充分挖掘系统总线每个瞬间的潜力
九、查看linux
有时候需要查看Linux系统运行了多久时间,此时需要知道上次开机启动时间; 有时候由于断电或供电故障突然停机,需要查看Linux开机时间/重启时间;
1、who命令
who -b:
who -b 查看最后一次系统启动的时间,即什么时候开启启动的,从启动到运行即系统启动花了多长时间。
who -r 查看当前系统运行时间,即什么时候开始运行的,和启动时间一般相差几分钟,这还是由系统的启动耗时决定。
如下截图可知,系统启动花了2分钟。
2、TOP命令查看
如下截图所示,up后表示系统到目前运行了多久时间。反过来推算系统重启时间
3、last reboot
last reboot可以看到Linux系统历史启动的时间。
这是按照倒叙排序的,第一行就是最近一次的启动时间。
如果只需要查看最后一次Linux系统启动的时间:
last reboot | head -1 或 last reboot | head -n 1,即显示第一行
显示前两行如下:
十、head命令
head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。
参数:
- -q 隐藏文件名
- -v 显示文件名
- -c<数目> 显示的字节数。
- -n<行数> 显示的行数。
实例
显示 notes.log 文件的开头 5 行,请输入以下命令:
head -n 5 runoob_notes.log
十一、last命令
last命令的作用是显示近期用户或终端的登录情况,进而使管理员可以获知谁曾经或者企图连接系统。
执行last命令时,它会读取/var/log目录下名称为wtmp的文件,并把该文件记录的登录系统或终端的用户名单全部显示出来。
默认显示wtmp的记录,btmp能显示的更详细,可以显示远程登录,例如ssh登录。
一般管理员排障时使用。
以上看到有last reboot用法,等同于last|grep reboot,last不是显示用户登录吗?为啥会有重启的记录?其实重启是system boot,可能也是一种登录控制重启吧,继续调研
十二、tar命令
1、介绍
tar命令是类Linux中比较常用的解压与压缩命令。
tar命令本身用到的是归档功能,即文件没有真正进行压缩打包,创建之后的归档文件,往往会比原来所有文件的大小总和要大,就相当于日常生活中把一些东西放入到收纳盒里面,整个收纳盒的重量是要大于原来被收纳的物品的总重量的。
如果要对文件进行压缩,一般会调用其他的命令来实现,常用的有三种:zip,gzip2,bzip,其中zip命令一般是单独使用的,gzip2,bzip一般要跟tar命令结合到一起使用。
一些常用的命令参数如下:
-c --create创建新的文档,即创建压缩文件
-x --extract, --get :即解开压缩文件
上面2个参数只能选择其中一个。
选择压缩方式:
-z : gzip 压缩
-j : bzip2 压缩
指定文件名:-f
-f :使用文件名,请留意,在 f 之后要立即接文件名,不要再加参数!
例如使用 tar -zcvfP tfile sfile 就是错误的写法,要写成
tar -zcvPf tfile sfile 才对!
-v --verbose 显示详细的tar处理的文件信息,这个常用,但不建议用在背景执行过程!
-f --file 要操作的文件名
2、案例
案例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩
特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
如果加 j 参数,则以 .tar.bz2 来代表bzip2
案例二:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,
我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz , 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc
则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!
十三、配置DNS
resolv.conf是客户机的DNS服务配置文件,是resolver类库使用的配置文件,每当一个程序需要通过域名来访问internet上面的其它主机时,需要利用该类库将域名转换成对应的IP,然后才可进行访问。
所以配置DNS,其实就是修改此文件即可。执行命令:vim /etc/resolv.conf即可修改。
注意:我们通过nameserver加入了自己的域名解析服务器。那么,如果本地解析不了,就会用我们的域名解析服务器。
另外,我们配置了nameserver 127.0.0.1,这个主要是给dnsmasq使用的,dnsmasq后续会专门讲。但是对于公有云没有安装dnsmasq的这个没配没有什么用。
对于没有配置我们的域名解析服务器的没办法解析我们自己的域名。
但是配置了我们的域名解析服务器就可以了,如下所示:
resolv.conf的关键字主要有四个,分别是:
nameserver:表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver。下图可知,首先使用本机的DNS服务去解析(其实就是resolver类库,即内核)。
search:它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。domain和search不能共存;如果同时存在,后面出现的将会被使用。search的作用是当访问的域名不能被DNS解析时,resolver会将该域名加上search指定的参数,重新请求DNS,直到被正确解析或试完search指定的域名列表为止。
此时我改下配置,发现就不会再拼接了。
domain:声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容。
sortlist:允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。
注意:CentOS 7.x重启后/etc/resolv.conf会被重置!
具体版本CentOS 7.6,镜像打了之后,发现新机器的/etc/resolv.conf配置的DNS被还原了,导致很多和内网的交互失败。
解决办法:修改网卡配置,增加“PEERDNS=no”
vi /etc/sysconfig/network-scripts/ifcfg-eth0
PEERDNS=no这个选项可令 /etc/resolv.conf 在系统重启后不会被重写。
然后,重启网卡服务:systemctl restart network即可。
十四、Linux图形化界面的安装与卸载
1.yum安装图形界面
yum groupinstall "X Window System"
2.安装GNOME桌面环境 (如果其中一环境不能安装,尝试用另一环境,亲测)
yum groupinstall "GNOME Desktop Environment" / yum groupinstall "KDE (K Desktop Environment)"
3.图形界面启动 键入命令 startx
4.图形界面想要卸载
yum groupremove "GNOME Desktop Environment"
yum groupremove "X Window System"
十五、linux 之.service文件简介
1、什么是.service文件?
Linux中.service文件是某项服务对应的配置文件,可用于systemd管理和控制的服务的设置。
比如我们的firstrun.service文件:
.service 文件通常包含3个模块,即:
[Unit]:表示启动顺序和依赖关系;
[Service]:服务的启动行为以及如何启动、重启、停止等信息
[Install]:表示如何安装配置文件。
2、如何管理?
.service 文件配置的服务常用systemd管理。
然而,systemd有系统和用户区分;系统(/user/lib/systemd/system/)、用户(/etc/lib/systemd/user/)。
一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。
我们的firstrun是放在/user/lib/systemd/system/下的。
3、内容介绍
[Unit]
作用:主要给出服务描述、启动顺序和依赖关系
Description:当前服务的简单描述。
Documentation:服务文档
After和Before:表示启动顺序,不涉及依赖关系。
- Before=xxx.service表示本服务在xxx.service 启动之前启动
- After=yyy.service表示本服务在yyy.service 之后启动。
- 所以我们firstrun服务配置表示是在network.target之后启动。
Wants:表示该服务和某服务存在某种弱依赖关系,即某服务停止运行或退出不影响该服务继续运行。
Requires:表示”强依赖”关系,即某服务停止运行或退出,改服务也必须停止运行。
Wants字段与Requires字段只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的。
[Service]
作用:服务的启动行为以及如何启动、重启、停止等信息
ExecStart:指定启动服务的命令或者脚本。
- [Service]
ExecStart=/usr/lib/systemd/firstrun - firstrun配置表示由/usr/lib/systemd/firstrun脚本启动服务。
ExecStop:指定单元停止时执行的命令或者脚本。
Restart:这个选项如果被允许,服务重启的时候进程会退出,会通过systemctl命令执行清除并重启的操作。
[Install]
作用:如何安装这个配置文件,即怎样做到开机自启
WantedBy字段:表示该服务所在的 Target。
Target的含义是服务组,表示一组服务。
WantedBy=multi-user.target指的是服务所在的Target是multi-user.target
Systemd 有默认的启动 Target就是multi-user.target,在这个组里的所有服务,都将开机启动。
十六、dnsmasq
1、介绍
dnsmasq提供 DNS 缓存和 DHCP 服务功能。
作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。
作为DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。
2、安装dnsmasq
yum -y install dnsmasq
3、dnsmasq作用
(1)将Dnsmasq作为本地DNS服务器使用,直接修改电脑的本地DNS的IP地址即可。
(2)应对ISP的DNS劫持(反DNS劫持),输入一个不存在的域名,正常的情况下浏览器是显示无法连接,DNS劫持会跳转到一个广告页面。先随便nslookup 一个不存在的域名,看看ISP商劫持的IP地址。
(3)智能DNS加快解析速度,打开/etc/dnsmasq.conf文件,server=后面可以添加指定的DNS,例如国内外不同的网站使用不同的DNS。
国内指定DNS
server=/cn/114.114.114.114
server=/taobao.com/114.114.114.114
server=/taobaocdn.com/114.114.114.114
国外指定DNS
server=/google.com/8.8.8.8
(4)屏蔽网页广告,将指广告的URL指定127这个IP,就可以将网页上讨厌的广告给去掉了。
address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1
(5)指定域名解析到特定的IP上。这个功能可以让你控制一些网站的访问,非法的DNS就经常把一些正规的网站解析到不正确IP上。
address=/freehao123.com/123.123.123.123
(6)管理控制内网DNS,首先将局域网中的所有的设备的本地DNS设置为已经安装Dnsmasq的服务器IP地址。然后修改已经安装Dnsmasq的服务器Hosts文件:/etc/hosts,指定域名到特定的IP中。
例如想让局域网中的所有用户访问www.freehao123.com时跳转到192.168.0.2,添加:
192.168.0.2 www.freehao123.com