ifcfg命令家族:
ifconfig命令:接口及地址查看和管理
使用:ifconfig [-a] [-v] [-s]
[root@node0 ~]# ifconfig #直接使用显示当前所有以启用接口信息
[root@node0 ~]# ifconfig -a #显示所有接口信息,包括down掉的接口
[root@node0 ~]# ifconfig -s #显示接口统计信息
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0 1500 0 0 0 0 0 0 0 0 BMU
eth0 1500 348847 0 0 0 925801 0 0 0 BMRU
lo 65536 33 0 0 0 33 0 0 0 LRU
# ifconfig IFACE IP/MASK [up|down] # ifconfig IFACE IP netmask NETMASK [root@node0 ~]# ifconfig eth1 192.168.0.100/24 up [root@node0 ~]# ifconfig eth1 192.168.0.100 netmask 255.255.0.0 up #给eth1配置地址并启用 options: [-]promisc [root@node0 ~]# ifconfig eth1 promisc #启用混杂模式 [root@node0 ~]# ifconfig eth1 -promisc #取消混杂模式 注意:命令修改接口配置立即送往内核中的TCP/IP协议栈,并生效; 管理IPv6地址: ifconfig IFACE add addr/prefixlen ifconfig IFACE del addr/prefixlen
route命令:路由查看及管理
路由条目类型:
主机路由:目标地址为单个IP;
网络路由:目标地址为IP网络;
默认路由:目标为任意网络,0.0.0.0/0.0.0.0
优先级:主机路由>网络路由>默认路由
查看:
# route -n #-n选项不把IP地址反解为主机名,也可不加-n。
添加:
route add [-net|-host] target [netmask Nm] [gw GW] [metric N] [[dev] If]
示例: [root@node0 ~]# route add -host 192.168.20.100 gw 172.16.100.110 dev eth0 #到达目标主机192.168.20.100都指向172.16.100.110,添加路由的主机需要与路由下一条在同一网络内才能添加成功 [root@node0 ~]# route add -net 192.168.20.0/24 gw 172.16.100.110 [root@node0 ~]# route add default gw 172.16.100.110 删除: route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 示例: [root@node0 ~]# route del -net 192.168.20.0/24 gw 172.16.100.110 dev eth0 [root@node0 ~]# route del default
netstat命令:
显示网络连接,路由表,接口状态等信息
显示路由表:netstat -rn #等同于route -n -r:显示内核路由表 -n:数字格式 显示网络连接: netstat [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p] -t:TCP协议的相关连接,连接均有其状态;FSM(Finate State Machine); -u:UDP相关的连接 -w:raw socket相关的连接 -l:处于监听状态的连接 -a:所有状态 -n:以数字格式显示IP和Port; -e:扩展格式 -p:显示相关的进程及PID; -c:持续输出网络状态 示例: [root@node0 ~]# netstat -tan [root@node0 ~]# netstat -uan [root@node0 ~]# netstat -tnl [root@node0 ~]# netstat -unl [root@node0 ~]# netstat -tunlp 显示接口的统计数据: netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--verbose|-v] [--program|-p] [--numeric|-n] 所有接口: netstat -i #与ifconfig -s相同 指定接口: netstat -I<IFace> [root@node0 ~]# netstat -Ieth0 [root@node0 ~]# netstat -I=eth0
ifup/ifdown命令:
[root@node0 ~]# ifdown eth1
[root@node0 ~]# ifup eth1
注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置;
配置主机名:
hostname命令:
查看:hostname
配置:hostname HOSTNAME
[root@node0 ~]# hostname test
[root@node0 ~]# hostname
test
当前系统有效,重启后无效; hostnamectl命令(CentOS 7): hostnamectl status:显示当前主机名信息; hostnamectl set-hostname:设定主机名,永久有效; [root@node0 ~]# hostnamectl set-hostname test 配置文件:/etc/sysconfig/network HOSTNAME=<HOSTNAME> 注意:此方法的设置不会立即生效; 但以后会一直有效;
centos6永久修改主机名:
编辑/etc/sysconfig/network文件,将HOSTNAME修改为新的主机名,修改完之后是用hostname命令修改为新的主机名,并且将新的主机名添加到/etc/hosts文件中指向127.0.0.1
配置DNS服务器指向:
配置文件:/etc/resolv.conf
nameserver DNS_SERVER_IP
测试(host/nslookup/dig): # dig -t A FQDN FQDN --> IP # dig -x IP IP --> FQDN
iproute家族:
ip命令:
用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道,是Linux下较新的功能强大的网络配置工具
语法:ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route | netns } 注意: OBJECT可简写,各OBJECT的子命令也可简写; ip link: network device configuration ip link set - change device attributes dev NAME (default):指明要管理的设备,dev关键字可省略; up和down: [root@node0 ~]# ip link set eth1 down [root@node0 ~]# ip link set eth1 up multicast on或multicast off:启用或禁用多播功能; [root@node0 ~]# ip link set eth1 multicast off [root@node0 ~]# ip link set eth1 multicast on name NAME:重命名接口,重命名需要先将接口down掉才能修改 [root@node0 ~]# ip link set eth1 name new-eth1 mtu NUMBER:设置MTU的大小,默认为1500; [root@node0 ~]# ip link set eth1 mtu 1400 netns PID:ns为namespace,用于将接口移动到指定的网络名称空间; [root@node0 ~]# ip link set eth1 netns testnet 需要先创建netns: [root@node0 ~]# ip netns add testnet ip link show - display device attributes ip link help - 显示简要使用帮助; ip netns: - manage network namespaces. ip netns list:列出所有的netns ip netns add NAME:创建指定的netns [root@node0 ~]# ip netns add testnet ip netns del NAME:删除指定的netns ip netns exec NAME COMMAND:在指定的netns中运行命令 将eth1移动到testnet命名空间中 ip link set eth1 netns testnet 此时ip link show将看不到eth1 [root@node0 ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 00:0c:29:6c:9c:e7 brd ff:ff:ff:ff:ff:ff 4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default link/ether 02:42:5b:93:86:1d brd ff:ff:ff:ff:ff:ff 在testnet中运行ip link show 命令 [root@node0 ~]# ip netns exec testnet ip link sh 1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 00:0c:29:6c:9c:f1 brd ff:ff:ff:ff:ff:ff ip address - protocol address management. ip address add - add new protocol address 使用:ip addr add IFADDR dev IFACE [label NAME]:为额外添加的地址指明接口别名; [broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到; [scope SCOPE_VALUE]: global:全局可用; link:接口可用; host:仅本机可用; 示例: [root@node0 ~]# ip addr add 192.0.0.2/24 dev eth1 label eth1:1 [root@node0 ~]# ip addr add 192.168.1.20/24 dev eth0 [root@node0 ~]# ip addr ls dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:6c:9c:e7 brd ff:ff:ff:ff:ff:ff inet 172.16.100.100/24 brd 172.16.100.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet 192.168.1.20/24 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::b36b:e4ec:d650:2528/64 scope link noprefixroute valid_lft forever preferred_lft forever ip address delete - delete protocol address 使用:ip addr delete IFADDR dev IFACE [root@node0 ~]# ip addr del 192.168.1.20/24 dev eth0 ip address show - look at protocol addresses 使用:ip addr list [IFACE]:显示接口的地址; [root@node0 ~]# ip addr show eth0 [root@node0 ~]# ip addr list eth0 ip address flush - flush protocol addresses 使用:ip addr flush dev IFACE [root@node0 ~]# ip addr flush dev eth0 ip route - routing table management ip route add - add new route ip route change - change route ip route replace - change or add new one 使用:ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP] 示例: [root@node0 ~]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100 [root@node0 ~]# ip route add 192.168.0.0/24 via 172.16.100.110 [root@node0 ~]# ip route add default via 172.16.100.2 ip route delete - delete route 示例: [root@node0 ~]# ip route del 192.168.0.0/24 via 172.16.100.110 dev eth0 ip route show - list routes 示例: [root@node0 ~]# ip route ls 172.16.100.0/24 [root@node0 ~]# ip route sh 172.16.100.0/24 ip route flush - flush routing tables 示例: [root@node0 ~]# ip route flush 172.16.100.0/24 ip route get - get a single route 示例: [root@node0 ~]# ip route get 192.179.10.0/24
ss命令:与netstat命令功能用法极其类似,比netstat强,可以过滤
ss [options] [ FILTER ]
选项:
-t:TCP协议的相关连接
-u:UDP相关的连接
-w:raw socket相关的连接
-l:监听状态的连接
-a:所有状态的连接
-n:数字格式
-p:相关的程序及其PID
-e:扩展格式信息
-m:内存用量
-o:计时器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ] TCP的常见状态: established syn-sent syn-recv fin-wait-{1,2} time-wait closed close-wait last-ack listen closing EXPRESSION: dport = sport = 示例:'( dport = :22 or sport = :22)' [root@node0 ~]# ss -tan '( dport = :22 or sport = :22 )' [root@node0 ~]# ss -tan state established
使用命令配置IP/ROUTE只能暂时生效,重启之后就会丢失,要永久保存需要将配置写入配置文件中
配置文件:
IP/NETMASK/GW/DNS等属性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
IFACE:接口名称;
路由的相关配置文件:/etc/sysconfig/networkj-scripts/route-IFACE
配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通过大量参数来定义接口的属性;其可通过vim等文本编辑器直接修改,也可以使用专用的命令的进行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui) ifcfg-IFACE配置文件参数: DEVICE:此配置文件对应的设备的名称; ONBOOT:在系统引导过程中,是否激活此接口; UUID:此设备的惟一标识; IPV6INIT:是否初始化IPv6; BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有dhcp、bootp、static、none; TYPE:接口类型,常见的有Ethernet, Bridge; DNS1:第一DNS服务器指向; DNS2:备用DNS服务器指向; DOMAIN:DNS搜索域; IPADDR: IP地址; NETMASK:子网掩码;CentOS 7支持使用PREFIX以长度方式指明子网掩码; GATEWAY:默认网关; USERCTL:是否允许普通用户控制此设备; PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许; HWADDR:设备的MAC地址; NM_CONTROLLED:是否使用NetworkManager服务来控制接口; 网络服务: network NetworkManager 管理网络服务: CentOS 6: service network {start|stop|restart|status} CentOS 7:systemctl {start|stop|restart|status} network.service 配置文件修改之后,如果要生效,需要重启网络服务; CentOS 6:# service network restart CentOS 7:# systemctl restart network.service 用到非默认网关路由:/etc/sysconfig/network-scripts/route-IFACE 支持两种配置方式,但不可混用; (1) 每行一个路由条目: TARGET via GW 192.168.0.0/24 via 172.16.100.110 (2) 每三行一个路由条目: ADDRESS#=TARGET NETMASK#=MASK GATEWAY#=NEXTHOP
给接口配置多个地址:
ip addr之外,ifconfig或配置文件都可以;
(1) ifconfig IFACE_LABEL IPADDR/NETMASK [root@node0 ~]# ifconfig eth1:2 172.19.0.3/24 (2) 为别名添加配置文件; DEVICE=IFACE_LABEL BOOTPROTO:网络别名不支持动态获取地址; static, none