linux主机要联网,当然要配置网络。以下我们就来了解一下一些基本的网络参数该如何配置
一、配置网络接口和路由
①linux系统中的网络接口类型和命名规则:
以太网:eth#,如eth0,eth1...
PPP网络:ppp#
loopback:lo,本地回环接口。常用于系统内部测试,其IP固定为127.0.0.1
②ifconfig:是一个用来查看、配置、启用或禁用网络接口的工具,极为常用。
用法:
■ifconfig [-a]:-a选项表示显示所有接口信息,不指定则只显示处于激活状态的接口信息
■ifconfig IFNAME:显示指定接口的信息
■ifconfig IFNAME [del] IP:给指定接口配置IP地址,del表示删除IP地址
长格式:ifconfig IFNAME IP netmask MASK 例如 ifconfig eth0 192.168.10.2 netmask 255.255.255.0
短格式:ifconfig IFNAME IP/MASK(一般为掩码位数) 例如 ifconfig eth0 192.168.10.2/24
■ifconfig IFNAME hw ether HARD_ADDRESS:修改指定接口的MAC地址
■ifconfig IFNAME up/down:启用或关闭接口
■ifconfig IFNAME [-]arp:开机或关闭arp功能,带-表示关闭
■ifconfig IFNAME mtu #:设置能通过的MTU(最大数据传输单元)大小
③ifup/ifdown IFNAME:启用或关闭接口
注:这两个命令是依照ifcfg-eth#来进行启动或关闭的
[[email protected] ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:40:35:9D inet addr:192.168.30.3 Bcast:192.168.30.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe40:359d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:60057 errors:0 dropped:0 overruns:0 frame:0 TX packets:41967 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5893244 (5.6 MiB) TX bytes:4412775 (4.2 MiB) 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:188 errors:0 dropped:0 overruns:0 frame:0 TX packets:188 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:16220 (15.8 KiB) TX bytes:16220 (15.8 KiB) [[email protected] ~]# ifconfig eth0 192.168.30.4/24 #修改eth0的IP地址 [[email protected] ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:40:35:9D inet addr:192.168.30.4 Bcast:192.168.30.255 Mask:255.255.255.0 ... [[email protected] ~]# ifconfig eth0 down [[email protected] ~]# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 ... [[email protected] ~]# ifconfig eth0 up [[email protected] ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:40:35:9D inet addr:192.168.30.4 Bcast:192.168.30.255 Mask:255.255.255.0 ... [[email protected] ~]# ifdown eth0 [[email protected] ~]# ifup eth0 #ifup会根据接口配置文件里的设置启用接口,可对比以上用ifconfig启用接口发现二者的区别 ... [[email protected] ~]# ifconfig #注意用ifup启用接口后接口IP地址变回192.168.30.3 eth0 Link encap:Ethernet HWaddr 00:0C:29:40:35:9D inet addr:192.168.30.3 Bcast:192.168.30.255 Mask:255.255.255.0 ...
④route:显示或设置linux内核中的网络路由表
查看:route [-neC]
-n:显示数字格式的地址(不要DNS反解)
-e:显示更多的信息
-C:显示路由缓存
设置:
增加路由条目:route add [-host HOST_IP/-net NET_ADDRESS] gw NEXT_HOP [dev DEVICE]
删除路由条目:route del [-host HOST_IP/-net NET_ADDRESS]
设置或删除默认网关:route add/del default gw IP_ADDRESS,也可写作route add/del -net 0.0.0.0 gw IP_ADDRESS
-host:目标为主机
-net:目标为网络,-net 0.0.0.0表示目标为任意地址
gw:gateway,网关
dev:指定由哪块网卡连接出去时使用该设置
例 route add -host 172.16.100.3 gw
192.168.1.254
route add -net 10.0.0.0/8 gw 192.168.1.254
[[email protected] ~]# route add -host 172.16.12.3 gw 192.168.30.254 [[email protected] ~]# route add -net 10.0.0.0/8 gw 192.168.30.254 [[email protected] ~]# route -n #Gateway若显示为0.0.0.0则表示目标网络为本地网络,无需网关 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 172.16.12.3 192.168.30.254 255.255.255.255 UGH 0 0 0 eth0 192.168.30.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 10.0.0.0 192.168.30.254 255.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.30.2 0.0.0.0 UG 0 0 0 eth0 [[email protected] ~]# route del -host 172.16.12.3 [[email protected] ~]# route del -net 10.0.0.0/8 [[email protected] ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.30.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 0.0.0.0 192.168.30.2 0.0.0.0 UG 0 0 0 eth0
⑤ip:一款强大的网络配置工具,综合了ifconfig和route命令的功能
选项:
-s:显示更详细的信息
用法:
ip link show [DEVICE]:查看所有接口或指定接口的信息
ip link set DEVICE {up/down/arp {on/off}/name NAWNAME/alias NAME/mtu MTU}
[[email protected] ~]# ip link set eth0 down #关闭eth0 [[email protected] ~]# ip link show #可以看到eth0的状态已为"down" 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state down qlen 1000 link/ether 00:0c:29:40:35:9d brd ff:ff:ff:ff:ff:ff [[email protected] ~]# ip link set eth0 up
ip addr show/flush [dev DEVICE]
ip addr add/del ADDRESS [dev DEVICE] [label IFALIAS] [broadcast BCAST_ADDRESS]
注:使用ip addr给接口新增IP地址无需附于接口别名上,且不会覆盖已有地址,这个新增的地址不会在ifconfig命令中显示,要使用ip addr show查看 ;使用label IFALIAS定义接口别名
[[email protected] ~]# ip addr add 192.168.30.10/24 dev eth0 #直接给eth0新增IP地址 [[email protected] ~]# ip addr add 192.168.30.20/24 dev eth0 label eth0:0 #定义接口别名 [[email protected] ~]# ip addr show eth0 #显示eth0的ip地址信息 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:40:35:9d brd ff:ff:ff:ff:ff:ff inet 192.168.30.3/24 brd 192.168.30.255 scope global eth0 inet 192.168.30.10/24 scope global secondary eth0 inet 192.168.30.20/24 scope global secondary eth0:0 inet6 fe80::20c:29ff:fe40:359d/64 scope link valid_lft forever preferred_lft forever [[email protected] ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:40:35:9D inet addr:192.168.30.3 Bcast:192.168.30.255 Mask:255.255.255.0 ... eth0:0 Link encap:Ethernet HWaddr 00:0C:29:40:35:9D inet addr:192.168.30.20 Bcast:0.0.0.0 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ... [[email protected] ~]# ip addr flush dev eth0 #清除eth0上的IP地址 [[email protected] ~]# ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:40:35:9d brd ff:ff:ff:ff:ff:ff [[email protected] ~]# ipup eth0
ip route list/flush:列出或清空路由表
ip route add DESTINATION [via NEXT_HOP] [src SOURCE_ADDRESS] [dev DEVICE]
ip route del DESTINATION
[[email protected] ~]# ip route add 10.0.0.0/8 via 192.168.30.254 dev eth0 #添加路由 [[email protected] ~]# ip route list 192.168.30.0/24 dev eth0 proto kernel scope link src 192.168.30.3 169.254.0.0/16 dev eth0 scope link metric 1002 10.0.0.0/8 via 192.168.30.254 dev eth0 default via 192.168.30.2 dev eth0 [[email protected] ~]# ip route del 10.0.0.0/8
⑥网络接口配置文件
我们除了使用命令配置网络参数外,还可直接配置文件。
linux中网络接口的配置文件位于/etc/sysconfig/network-scripts/目录下,有两类:
配置IP、掩码和网关:
以太网:ifcfg-IFNAME
PPP:ifcfg-ppp#
配置路由:route-IFNAME
■ifcfg-IFNAME配置文件的格式:
DEVICE=IFNAME: 此配置文件所关联到的设备,设备名称要与本文件名ifcfg-后面的保持一致;
BOOTPROTO={bootp|dhcp|static|none}
HWADDR:当前设备的MAC地址;
NM_CONTROLLED={yes|no}: 是否接受NetworkManager服务脚本来配置此设备,默认为yes,因此服务脚本不好用,建议设为no
ONBOOT={yes|no}: 是否在开机过程中,自动激活此接口
TYPE={Ethernet|Bridge}: 网络接口类型,首字母必须大写
UUID=
IPADDR:如果前面的bootproto设为dhcp,则在此指定的IP地址无效
NETMASK=
GATEWAY=
DNS1:首选DNS地址
DNS2:备用DNS地址
IPV6INIT={yes|no}:
USERCTL={yes|no}: 是否允许普通用户控制此接口,一般为no
PEERDNS={yes|no}: 是否接受DHCP服务器指派的DNS服务器地址,如果为yes,DHCP服务器指派的DNS地址会修改/etc/resolv.conf。默认为yes
[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=00:0C:29:40:35:9D TYPE=Ethernet UUID=0a45cf2b-169a-4820-82c4-ad3510abffc7 ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.30.3 NETMASK=255.255.255.0 GATEWAY=192.168.30.2 DNS1=8.8.8.8
■route-IFNAME文件格式:
格式1:每行一个路由条目
DESTINATION via NETX_HOP 例如 10.0.0.0/8 via 172.16.0.1
格式2: 每三行一组,定义一个路由条目,以下的#表示组编号
ADDRESS#=DESTINATION
NETMASK#=MASK
GATEWAY#=GW
如ADDRESS0=10.0.0.0
NETMASK0=255.255.255.0
GATEWAY0=172.16.0.1
注:以上两种格式不能混用
⑦如何在一个网络接口上配置多个ip
方法1:使用ip addr add ADDRESS dev DEVICE的方式直接在接口上新增IP
方法2:通过网络接口的别名来实现。IFNAME:#,例如eth0:0,eth0:1...
可使用命令或配置文件(ifcfg-IFNAME:#)配置(别名不支持使用DHCP配置)
⑧使用文本图形界面配置网络参数
TUI:system-config-network-tui
GUI:system-config-network-gui #需额外安装
setup
修改的结果会保存至相应的配置文件中
在ssh中使用文本图形界面配置网络参数时先将unicoding设为UTF-8
注意:使用命令配置的信息直接送往内核并立即生效,但不会永久有效(重启服务或系统会失效);配置文件里的设置是持久有效的,修改文件后需要重启服务才能生效
二、配置主机名
hostname:查看或修改主机名
查看:hostname [-adifs]
-a:显示主机别名
-d:显示DNS域名
-f:显示FQDN名称
-i:显示主机的ip地址
设置:hostname HOSTNAME
配置文件:/etc/sysconfig/network
深入理解hostname:使用hostname查看的主机名直接取自于内核参数/proc/sys/kernel/hostname,而这个内核参数的值是Linux启动时通过/etc/rc.d/rc.sysinit到/etc/sysconfig/network读取的,hostname命令设置的主机名只是即时有效,若想系统重启后仍有效,必须修改/etc/sysconfig/network中HOSTNAME的值。hostname与/etc/hosts中的配置没有关系
[[email protected] ~]# hostname #查看主机名 localhost.localdomain [[email protected] ~]# hostname excellence #临时修改主机名 [[email protected] ~]# hostname excellence [[email protected] ~]# echo brilliant > /proc/sys/kernel/hostname [[email protected] ~]# hostname brilliant [[email protected] ~]# vim /etc/sysconfig/network NETWORKING=yes #networking为网络服务总开关 HOSTNAME=personality NTPSERVERARGS=iburst
三、有关域名解析
①本地域名解析:/etc/hosts
②配置DNS服务器地址:/etc/resolv.conf
③dig:域名查询工具
用法:dig [选项] [参数]
常用选项:
@SERVER:指定域名解析服务器
-t:指定查询类型,默认为A
-x:执行逆向域名查询(反解IP至FQDN)
例 dig [-t A] FQDN
dig -x IP
[[email protected] ~]# dig ... ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 420 IN CNAME www.a.shifen.com. www.a.shifen.com. 111 IN A 119.75.217.109 www.a.shifen.com. 111 IN A 119.75.218.70 ... [[email protected] ~]# dig -x 119.75.218.70 ... ;; QUESTION SECTION: ;70.218.75.119.in-addr.arpa. IN PTR ...
四、其它网络管理相关工具
①ping: 使用ICMP协议测试主机之间的连通性
用法:ping [option]... HOST
常用选项:
-c:指定发送报文的个数
-i:发送报文的间隔时间,默认为1秒
-f:极限检测
-w:ping命令从发出到结束的总时长
-W:等待响应报文的超时时长,该选项常用于检测不可达主机
例 ping -c 1 -W 1 192.168.1.107 &> /dev/null & # 结尾的&表示将进程送到后台执行
[[email protected] ~]# ping www.baidu.com PING www.a.shifen.com (115.239.211.112) 56(84) bytes of data. 64 bytes from 115.239.211.112: icmp_seq=1 ttl=128 time=7.77 ms 64 bytes from 115.239.211.112: icmp_seq=2 ttl=128 time=5.19 ms ... [[email protected] ~]# ping -c 4 -i 0.5 192.168.1.107 PING 192.168.1.107 (192.168.1.107) 56(84) bytes of data. 64 bytes from 192.168.1.107: icmp_seq=1 ttl=128 time=0.985 ms 64 bytes from 192.168.1.107: icmp_seq=2 ttl=128 time=0.666 ms 64 bytes from 192.168.1.107: icmp_seq=3 ttl=128 time=1.23 ms 64 bytes from 192.168.1.107: icmp_seq=4 ttl=128 time=1.21 ms --- 192.168.1.107 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 1505ms rtt min/avg/max/mdev = 0.666/1.025/1.233/0.229 ms [[email protected] ~]# ping -c 1 -W 1 192.168.1.107 &> /dev/null & [1] 11772 [[email protected] ~]# echo $? 0
②traceroute:追踪网络数据包的路由途径,预设数据包大小是40Bytes
用法:traceroute [-n] HOST
[[email protected] ~]# traceroute www.baidu.com traceroute to www.baidu.com (115.239.210.27), 30 hops max, 60 byte packets # 显示经过了30跳 1 192.168.30.2 (192.168.30.2) 0.120 ms 0.143 ms 0.106 ms 2 * * * 3 * * * ...
③nslookup:域名查询工具。
有两种工作模式:交互和非交互
[[email protected] ~]# nslookup www.mtime.com Server: 192.168.30.2 #DNS服务器地址 Address: 192.168.30.2#53 Non-authoritative answer: #非权威答案,表明是在缓存中读取的 Name: www.mtime.com Address: 59.151.32.20 #返回的第一个IP地址 Name: www.mtime.com Address: 59.151.32.21 [[email protected] ~]# nslookup #交互模式 > server 8.8.8.8 #可指定DNS服务器地址,若不指定,默认为/etc/resolv.conf中设置的地址 Default server: 8.8.8.8 Address: 8.8.8.8#53 > www.ifeng.com Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: www.ifeng.com canonical name = www.ifeng.com.ifengcdn.com. www.ifeng.com.ifengcdn.com canonical name = geo-www.ifeng.com.akadns.net. geo-www.ifeng.com.akadns.net canonical name = www.ifeng.com.lxdns.com. www.ifeng.com.lxdns.com canonical name = c.xdwscache.ourglb0.com. Name: c.xdwscache.ourglb0.com Address: 101.70.152.37
④mtr:网络连通性判断工具,结合了ping, traceroute,nslookup的相关特性
用法:mtr HOST
⑤netstat: 显示Linux中网络系统的状态信息
用法:netstat [option]...
常用选项:
-t:tcp协议相关
-u:udp协议相关
-n:显示数字格式的地址
-l: listen,显示处于监听状态的连接
-a:所有状态的连接
-p:显示会话中的进程程序名及进程号
-r:routing,显示路由表。netstat -rn同route -n
常用组合选项:-tunl,-tanp
[[email protected] ~]# netstat -tunl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN ... udp 0 0 :::1008 :::* udp 0 0 :::54713 :::* [[email protected] ~]# netstat -tanp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1257/rpcbind tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1472/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1336/cupsd ... [[email protected] ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.30.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.30.2 0.0.0.0 UG 0 0 0 eth0
⑥ss:类似netstat的工具,比netstat更新。ss的优势在于它能够显示更多更详细的信息,且比netstat更快速更高效,建议优先使用此命令。其用法与选项同netstat很相近,不再赘述
[[email protected] ~]# ss -tlnp State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 :::111 :::* users:(("rpcbind",1257,11)) LISTEN 0 128 *:111 *:* users:(("rpcbind",1257,8)) LISTEN 0 128 :::22 :::* users:(("sshd",1472,4)) ...
⑦ethtool:显示或设置网络接口参数
用法:ethtool [option]... IFNAME
常用选项:
-S: 显示网络接口的统计数据
[[email protected] ~]# ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s #千兆速率 Duplex: Full #全双工 Port: Twisted Pair ... [[email protected] ~]# ethtool -S eth0 NIC statistics: rx_packets: 58798 #接收到的包数 tx_packets: 41085 #发送的包数 rx_bytes: 6022407 tx_bytes: 4301086 rx_broadcast: 0 ...