Linux——网络配置及命令
traceroute命令(unix)/tracert命令(windows)
tracert命令的格式为:tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name。
①、-d
表示不将地址解析成主机名。
②、-h maximum_hops
表示搜索目标的最大跃点数。
③、-j host-list
表示与主机列表一起的松散源路由(仅适用于IPv4)。
④、-w timeout
表示等待每个回复的超时间(以毫秒为单位)。
⑤、-R
表示跟踪往返行程路径(仅适用于IPv6)。
⑥、-S srcaddr
表示要使用的源地址(仅适用于IPv6)。
⑦、-4和-6
表示强制使用IPv4或者IPv6。
⑧、target_name
表示目标主机的名称或者IP地址。
在Linux中配置IP地址的方法有以下这么几种:
- 图形界面配置IP地址(操作方式如Windows系统配置IP,但在实际生产中,我们并不建议在我们的服务器上安装Linux的图形界面,因为安装了图形界面将一定程度地影响了服务器的安全性和稳定性,因此,在这里就不对该方式进行详细的介绍了。)
ifconfig
命令临时配置IP地址(临时配置IP地址,即当我们重启计算机或重启网络服务后,配置将失效)setup
工具永久配置IP地址(setup
工具是由Red Hat
开发的,因此在正常情况下,该工具只能用于Red Hat
系列的Linux系统)(setup
工具——红帽专有图形化工具setup
设置IP地址)(使用setup命令设置完网络后需要使用service network restart
重启网络)- 修改网络配置文件
ifconfig
命令
ifconfig
命令可以查看与配置网络状态。命令结果如下:
eth0 Link encap:Ethernet HWaddr 00:0C:29:11:30:39
inet addr:192.168.134.129 Bcast:192.168.134.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe11:3039/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19731 errors:0 dropped:0 overruns:0 frame:0
TX packets:502 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1248492 (1.1 MiB) TX bytes:58905 (57.5 KiB)
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:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
- (
lo
表示本地回环网卡的信息)
使用ifconfig
命令还可以临时设置某一网卡的IP地址和子网掩码。如:
ifconfig eth0 192.168.0.200 netmask 255.255.255.0
Linux网络配置文件
网卡信息文件
查看第一张网卡的网卡信息:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
- 信息如下:
DEVICE=eth0
HWADDR=00:0C:29:11:30:39
TYPE=Ethernet
UUID=5ab36190-a5df-4bf1-94d8-6c126afd05f1
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
- 更多信息说明,如下表格:
配置 | 说明 |
---|---|
DEVICE=eth0 |
网卡设备名,eth0表示第一张网卡 |
BOOTPROTO=none |
是否自动获取IP(none、static、dhcp),当值为dhcp时,只需配置上述例子中的那几项就可以联网 |
HWADDR=00:0C:29:11:30:39 |
MAC地址 |
NM_CONTROLLED=yes |
是否可以由Network Manager图形管理工具托管 |
ONBOOT=yes |
是否随网络服务启动当前网卡生效(在CentOS 6 以上的版本中ONBOOT是默认关闭的。) |
TYPE=Ethernet |
网络类型,这里为以太网 |
UUID=5ab36190-a5df-4bf1-94d8-6c126afd05f1 |
唯一识别码 |
IPADDR=192.168.0.200 |
IP地址 |
NETMASK=255.255.255.0 |
子网掩码 |
GATEWAY=192.168.0.1 |
网关 |
DNS1=202.106.0.20 |
DNS |
IPV6INIT=no |
IPv6是否启用,这里设置为不启用 |
USERCTL=no |
是否允许非root用户控制此网卡,这里为不允许 |
说明:
1.自动获取IP的条件是:必须在局域网内存在DHCP服务器。
2.相同UUID网络配置的计算机会导致互相不能上网。
主机名文件
查看主机名文件:
vi /etc/sysconfig/network
- 内容如下:
NETWORKING=yes
HOSTNAME=localhost.localdomain
其中:
1. /etc/sysconfig/network
该文件中NETWORKING=no
时主机将无法连接网络。
2. Windows下,在同一局域网内相同主机名之间是不能进行传递的。要求在局域网内是不能有相同主机名的主机的。而在Linux中局域网内是可以有相同主机名的主机的,如默认主机名:localhost.localdomain
。
3. 修改/etc/sysconfig/network
文件中的主机名后需要重启计算机才能生效。使用hostname 主机名
命令可以临时更改主机名后,重启计算机后将失效。通过hostname
命令可以查看当前主机名。
DNS配置文件
查看DNS配置文件:
vi /etc/resolv.conf
- 内容如下:
; generated by /sbin/dhclient-script
search localdomain
nameserver 192.168.134.2
其中最重要的是nameserver
这一项,设置的是域名服务器的地址,多个域名服务器,则在后续添加空格继续补充域名服务器的地址,或者另起一行做类似的nameserver
配置。
VMWare中Linux的网络参数配置
(以CentOS为例)
1. 配置Linux IP地址;
2. CentOS 6以上的系统修改修改网络配置以启动网卡vi /etc/sysconfig/network-scripts/ifcfg-eth0
将ONBOOT
选项的值修改为yes
,重启网络服务service network restart
;
3. 对于网络配置文件中UUID出现相同的情况,需要修改UUID的值,修改方式如下:
1. `vi /etc/sysconfig/network-scripts/ifcfg-eth0`,删除MAC地址行
2. `rm -rf /etc/udev/rules.d/70-persistent-net.rules`,删除网卡和MAC地址绑定文件
3. 重启当前系统
- 4.设置VMWare虚拟机的网络连接方式,选择桥接模式(可不勾选“复制物理网络连接状态”这一选项)(其中桥接模式,允许虚拟机访问外网,同时可以与局域网内的其他计算机进行通讯(包括本机);NAT模式,允许虚拟机访问外网,能与本机进行数据通讯;Host Only模式,只能同本机进行通讯);
5. 修改桥接的网卡,在“虚拟网络编辑器”窗口中选择VMnet0
,修改桥接模式下桥接的网卡,这里选择可以上网的网卡。
VMWare桥接模式下配置静态IP
修改网卡配置文件,如下:
DEVICE=eth0
HWADDR=00:0C:29:FC:8D:E6
TYPE=Ethernet
#UUID=343b502d-2249-4e33-9187-9abc285b9292
UUID=31b6504c-7ddd-4b74-a51e-46cd34ed182d
ONBOOT=yes
NM_CONTROLLED=yes
#BOOTPROTO=dhcp
BOOTPROTO=static
IPADDR=11.10.1.192
NETMASK=255.255.255.0
GATEWAY=10.8.8.1
DNS1=114.114.114.114
DNS2=8.8.8.8
IPV6INIT=no
USERCTL=no
重启网卡:
service network restart
这里,ping外网地址会失败。使用route
命令发现,默认网关没有设置成功。原因不明(DHCP模式下,动态获取IP,默认网关10.8.8.1
设置成功,可以正常上网。)
为配置静态IP的情况下,解决默认网关未设置成功的问题,使用route命令临时修改默认网关:
临时修改默认网关(linux中配置网络出现 SIOCADDRT: No such process):
sudo route add 10.8.8.1/32 dev eth0
sudo route add default gw 10.8.8.1
Linux网络命令
网络环境操作
ifconfig
命令
ifconfig
:查看网络状态(能查看IP地址和子网掩码,但是不能查看网关和DNS地址),还可以临时设置某一网卡的IP地址和子网掩码。- 关闭与启动网卡
ifdown 网卡设备名
:禁用该网卡设备。
ifup 网卡设备名
:启用该网卡设备。 - 查询网络状态
netstat 选项
(可以用于查看当前计算机开放的端口,从而判断当前计算机启动了哪些服务)
选项:
-t:列出TCP协议端口
-u:列出UPD协议端口
-n:不使用域名和服务名,而使用IP地址和端口号
-l:仅列出在监听状态网络服务
-a:列出所有的网络连接
-r:列出路由列表,功能和route命令一只
常用组合:-tuln、-an、-rn
查看某一状态下的网络连接情况,如:netstat -an | grep ESTABLISHED
查看某一网络状态下的行数(查看有多少台计算机连接到当前服务器),如:netstat -an | grep ESTABLISHED | wc -l
netstat -rn 和 route -n 命令功能一样,结果一致。通过这样的命令查看当前计算机的网关地址。
- (注:Linux中如何中止远程连接?使用
logout
命令。在Windows中则操作菜单栏点击注销
。)
4. route
命令
route -n
:查看路由列表(可以看到当前计算机的网关)。
route add default gw 192.168.1.1
:临时设定网关。
route del default gw 192.168.1.1
:删除设定的网关。
5. 域名解析命令
nslookup [主机名或IP]
:进行域名或IP地址的解析。
nslookup
> server
# 查看本机DNS服务器
> exit
# 退出
- (注:CentOS 6.x后
nslookup
已不存在,需要进行安装,参考:CentOS 6.x 安裝 nslookup 的步驟 (與 yum 如何查詢套件) 。在不想安装nslookup
的情况下,又想查看本机配置的DNS服务器地址,可以使用cat /etc/resolv.conf
命令。)
网络测试命令
ping
命令
ping [选项] ip或域名
:探测指定IP或域名的网络状况。
选项:
-c 次数:指定ping发送包的次数
- 1
- 2
2. telnet
命令
telnet [域名或IP] [端口]
:远程管理与端口探测命令。(telnet
的远程连接是极不安全的,它是明文传递数据,并未将数据加密。所以我们并不建议使用telnet
命令进行远程管理,但是我们可以通过该命令探测某个计算机中是否开放了某一端口。如:telnet 192.168.0.1 80
)
3. traceroute
命令
traceroute [选项] IP或域名
:路由跟踪,查看访问某一IP或域名时经过的路由(路由路径)。(该命令可能需要单独安装)
选项:
-n 使用IP而不使用域名显示
- 4.
wget
命令
wget 下载地址
:下载命令。
5. tcpdump
命令
tcpdump
命令:用于监听某一网卡下某一服务的数据包接收情况(截获数据包-抓包)。如:tcpdump -i eth0 -nnX port 21
。
选项:
-i 指定监听的网卡
-nn 将数据包中的域名与服务转为IP和端口显示
-X 以十六进制和ASCII码显示数据包内容
port 指定监听的端口
下面我们逐步介绍几个常用的命令:
1、Ping命令。
当您的机器不能访问Internet,首先确认是否是本地局域网的故障。假定局域网的代理服务器IP地址为202.168.0.1,您可以使用ping 202.168.0.1命令查看本机是否和代理服务器联通。此外可以测试本机的网卡是否正常工作,使用 ping 127.0.0.1命令。一般返回ping的信息就表示本地到该主机的网络线路连通。
但是很多服务器为了防止攻击,一般会关闭对ping的响应。所以ping一般作为测试连通性使用。ping命令后,会接收到对方发送的回馈信息,其中记录着对方的IP地址和TTL。TTL是该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。TTL是IPv4包头的一个8 bit字段。例如IP包在服务器中发送前设置的TTL是64,你使用ping命令后,得到服务器反馈的信息,其中的TTL为56,说明途中一共经过了8道路由器的转发,每经过一个路由,TTL减1。
2、Tracert
Tracert命令用来显示数据包到达目标主机所经过的路径(路由器),并显示到达每个节点(路由器)的时间。命令功能同Ping类似,但它所获得的信息要比Ping命令详细得多,它把数据包所走的全部路径、节点的IP以及花费的时间都显示出来。该命令比较适用于大型网络。
Tracert 先发送 TTL 为 1 的回应数据包,当数据包上的 TTL在路由器收到后TTL自动减1 ,一旦某个服务器将TTL减1后,等于了0,路由器应该将“ICMP Time Exceeded”的消息发回源计算机,源计算机就根据收到的信息判断达到的路由器和所用时间。下次再次发送数据包时,将TTL递增 1,继续上述测试,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL过期的数据包,这在 Tracert 实用程序中看不到,我们会显示请求超时的请求信息。下图所示,我们测试到新浪的路经过了8道路由,同时根据上图测试ping 新浪时候,TTL=56,说明新浪的TTL初始设置为64,经过8道路由后到达我们客户机,还剩下64-8 = 56。下图中请求超时的反馈信息是因为路由器对ping命令做了处理,关闭了ping的响应,所以我们收不到发给他的反馈信息。
3、pathping
pathping 命令是一个路由跟踪工具,它将 ping 和 tracert 命令的功能与这两个工具所不提供的其他信息结合起来,综合了二者的功能。pathping会先显示中间的通过的路由器(类似tracert命令得到的信息),然后对每个中间路由器(节点)发送一定数量的ping包,通过统计他们对ping包响应的数据包来分析通信质量。上面也提到了,有的路由器对ping关闭了响应,所以有的节点的丢包率会达到100%,所以这种一般就是关闭了ping回复。你可以自己ping试一下。还有,对ping包丢弃程度只是节点本身对ping的处理,并不一定影响他的通信,你可以看到,关闭ping命令节点的下一个节点返回到数据是正常的,说明回复的包都成功发送回来。总之,pathping 命令在一段时间内将数据包发送到将到达最终目标的路径上的每个路由器,然后根据从每个跃点返回的数据包计算结果。由于命令显示数据包在任何给定路由器或链接上丢失的程度,因此可以很容易地确定可能导致网络问题的路由器或链接。下图所示,我们看到,达到第二个就终止了,因为第二道节点(路由器),不支持ping,然后,程序就终止不在继续往下探测了。
4、 nslookup