Linux 网络配置

本文最后更新于:2024年9月8日 晚上

Linux 网络配置

ping

ping命令用来测试主机之间网络的连通性,执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

1
ping(选项)(参数)
  • 选项
    • -d:使用Socket的SO_DEBUG功能。
    • -c<完成次数>:设置完成要求回应的次数。
    • -f:极限检测。
    • -i<间隔秒数>:指定收发信息的间隔时间。
    • -I<网络界面>:使用指定的网络界面送出数据包。
    • -l<前置载入>:设置在送出要求信息之前,先行发出的数据包。
    • -n:只输出数值。
    • -p<范本样式>:设置填满数据包的范本样式。
    • -q:不显示指令执行过程,开头和结尾的相关信息除外。
    • -r:忽略普通的Routing Table,直接将数据包送到远端主机上。
    • -R:记录路由过程。
    • -s<数据包大小>:设置数据包的大小。
    • -t<存活数值>:设置存活数值TTL的大小。
    • -v:详细显示指令的执行过程。
  • 参数
    • 目的主机:指定发送ICMP报文的目的主机。

ifconfig

ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数,用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在,要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

1
ifconfig(参数)
  • add<地址>:设置网络设备IPv6的ip地址。
  • del<地址>:删除网络设备IPv6的IP地址。
  • down:关闭指定的网络设备。
  • <hw<网络设备类型><硬件地址>:设置网络设备的类型与硬件地址。
  • io_addr<I/O地址>:设置网络设备的I/O地址。
  • irq<IRQ地址>:设置网络设备的IRQ
  • media<网络媒介类型>:设置网络设备的媒介类型。
  • mem_start<内存地址>:设置网络设备在主内存所占用的起始地址。
  • metric<数目>:指定在计算数据包的转送次数时,所要加上的数目。
  • mtu<字节>:设置网络设备的MTU
  • netmask<子网掩码>:设置网络设备的子网掩码。
  • tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址。
  • up:启动指定的网络设备。
  • -broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理。
  • -pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能。
  • -promisc:关闭或启动指定网络设备的promiscuous模式。
  • IP地址:指定网络设备的IP地址。
  • 网络设备:指定网络设备的名称。
1
2
#如果命令未找到,安装net-tools
yum install net-tools.x86_64

实例

启动关闭指定网卡

1
2
ifconfig eth0 up
ifconfig eth0 down
  • ifconfig eth0 up为启动网卡eth0,ifconfig eth0 down为关闭网卡eth0,ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。

为网卡配置和删除IPv6地址

1
2
ifconfig eth0 add 33ffe:3240:800:1005::2/64    #为网卡eth0配置IPv6地址。
ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址。

用ifconfig修改MAC地址

1
ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE

配置IP地址

1
2
3
$ ifconfig eth0 192.168.2.10
$ ifconfig eth0 192.168.2.10 netmask 255.255.255.0
$ ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255

route

  • route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由,要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。
  • 在Linux系统中设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的ip地址设置为Linux机器的默认路由,要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了,可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。
1
route(选项)(参数)
  • 选项
    • -A:设置地址类型。
    • -C:打印将Linux核心的路由缓存。
    • -v:详细信息模式。
    • -n:不执行DNS反向查找,直接显示数字形式的IP地址。
    • -e:netstat格式显示路由表。
    • -net:到一个网络的路由表。
    • -host:到一个主机的路由表。
  • 参数
    • Add:增加指定的路由记录。
    • Del:删除指定的路由记录。
    • Target:目的网络或目的主机。
    • gw:设置默认网关。
    • mss:设置TCP的最大区块长度(MSS),单位MB
    • window:指定通过路由表的TCP连接的TCP窗口大小。
    • dev:路由记录所表示的网络接口。

实例

显示当前路由

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
112.124.12.0 * 255.255.252.0 U 0 0 0 eth1
10.160.0.0 * 255.255.240.0 U 0 0 0 eth0
192.168.0.0 10.160.15.247 255.255.0.0 UG 0 0 0 eth0
172.16.0.0 10.160.15.247 255.240.0.0 UG 0 0 0 eth0
10.0.0.0 10.160.15.247 255.0.0.0 UG 0 0 0 eth0
default 112.124.15.247 0.0.0.0 UG 0 0 0 eth1

$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
112.124.12.0 0.0.0.0 255.255.252.0 U 0 0 0 eth1
10.160.0.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
192.168.0.0 10.160.15.247 255.255.0.0 UG 0 0 0 eth0
172.16.0.0 10.160.15.247 255.240.0.0 UG 0 0 0 eth0
10.0.0.0 10.160.15.247 255.0.0.0 UG 0 0 0 eth0
0.0.0.0 112.124.15.247 0.0.0.0 UG 0 0 0 eth1
  • 其中Flags为路由标志,标记当前网络节点的状态,Flags标志说明:
    • U Up表示此路由当前为启动状态。
    • H Host,表示此网关为一主机。
    • G Gateway,表示此网关为一路由器。
    • R Reinstate Route,使用动态路由重新初始化的路由。
    • D Dynamically,此路由是动态性地写入。
    • M Modified,此路由是由路由守护程序或导向器动态修改。
    • ! 表示此路由当前为关闭状态。

添加网关/设置网关

1
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0    #增加一条到达244.0.0.0的路由。

屏蔽一条路由

1
route add -net 224.0.0.0 netmask 240.0.0.0 reject     #增加一条屏蔽的路由,目的地址为224.x.x.x将被拒绝。

删除路由记录

1
2
route del -net 224.0.0.0 netmask 240.0.0.0
route del -net 224.0.0.0 netmask 240.0.0.0 reject

删除和添加设置默认网关

1
2
route del default gw 192.168.120.240
route add default gw 192.168.120.240

ip

ip命令用来显示或操纵Linux主机的路由,网络设备,策略路由和隧道,是Linux下较新的功能强大的网络配置工具。

1
ip(选项)(参数)
  • 选项
    • -V:显示指令版本信息。
    • -s:输出更详细的信息。
    • -f:强制使用指定的协议族。
    • -4:指定使用的网络层协议是IPv4协议。
    • -6:指定使用的网络层协议是IPv6协议。
    • -0:输出信息每条记录输出一行,即使内容较多也不换行显示。
    • -r:显示主机时,不使用IP地址,而使用主机的域名。
  • 参数
    • 网络对象:指定要管理的网络对象。
    • 具体操作:对指定的网络对象完成具体操作。
    • help:显示网络对象支持的操作命令的帮助信息。

实例

用ip命令显示网络设备的运行状态

1
2
3
4
5
6
7
$ ip link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
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 qlen 1000
link/ether 00:16:3e:00:1e:51 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:00:1e:52 brd ff:ff:ff:ff:ff:ff

显示更加详细的设备信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ ip -s link list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
5082831 56145 0 0 0 0
TX: bytes packets errors dropped carrier collsns
5082831 56145 0 0 0 0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:00:1e:51 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
3641655380 62027099 0 0 0 0
TX: bytes packets errors dropped carrier collsns
6155236 89160 0 0 0 0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:00:1e:52 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
2562136822 488237847 0 0 0 0
TX: bytes packets errors dropped carrier collsns
3486617396 9691081 0 0 0 0

显示核心路由表

1
2
3
4
5
6
7
$ ip route list
112.124.12.0/22 dev eth1 proto kernel scope link src 112.124.15.130
10.160.0.0/20 dev eth0 proto kernel scope link src 10.160.7.81
192.168.0.0/16 via 10.160.15.247 dev eth0
172.16.0.0/12 via 10.160.15.247 dev eth0
10.0.0.0/8 via 10.160.15.247 dev eth0
default via 112.124.15.247 dev eth1

显示邻居表

1
2
3
$ ip neigh list
112.124.15.247 dev eth1 lladdr 00:00:0c:9f:f3:88 REACHABLE
10.160.15.247 dev eth0 lladdr 00:00:0c:9f:f2:c0 STALE

netstat

  • netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。
1
netstat(选项)
  • -a或–all:显示所有连线中的Socket
  • -A<网络类型>或–<网络类型>:列出该网络类型连线中的相关地址。
  • -c或–continuous:持续列出网络状态。
  • -C或–cache:显示路由器配置的快取信息。
  • -e或–extend:显示网络其他相关信息。
  • -F或–fib:显示FIB
  • -g或–groups:显示多重广播功能群组组员名单。
  • -h或–help:在线帮助。
  • -i或–interfaces:显示网络界面信息表单。
  • -l或–listening:显示监控中的服务器的Socket
  • -M或–masquerade:显示伪装的网络连线。
  • -n或–numeric:直接使用ip地址,而不通过域名服务器。
  • -N或–netlink或–symbolic:显示网络硬件外围设备的符号连接名称。
  • -o或–timers:显示计时器。
  • -p或–programs:显示正在使用Socket的程序识别码和程序名称。
  • -r或–route:显示Routing Table
  • -s或–statistice:显示网络工作信息统计表。
  • -t或–tcp:显示TCP传输协议的连线状况。
  • -u或–udp:显示UDP传输协议的连线状况。
  • -v或–verbose:显示指令执行过程。
  • -V或–version:显示版本信息。
  • -w或–raw:显示RAW传输协议的连线状况。
  • -x或–unix:此参数的效果和指定"-A unix"参数相同。
  • –ip或–inet:此参数的效果和指定"-A inet"参数相同。

实例

列出所有端口(包括监听和未监听的)

1
2
3
netstat -a     #列出所有端口。
netstat -at #列出所有tcp端口。
netstat -au #列出所有udp端口。

列出所有处于监听状态的 Sockets

1
2
3
4
netstat -l        #只显示监听端口。
netstat -lt #只列出所有监听 tcp 端口。
netstat -lu #只列出所有监听 udp 端口。
netstat -lx #只列出所有监听 UNIX 端口。

显示每个协议的统计信息

1
2
3
netstat -s   显示所有端口的统计信息。
netstat -st 显示TCP端口的统计信息。
netstat -su 显示UDP端口的统计信息。

找出程序运行的端口

  • 并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。
1
netstat -ap | grep ssh
  • 找出运行在指定端口的进程:
1
netstat -an | grep ':80'

显示网络接口列表

1
netstat -i

nmcli

  • nmcli命令是 NetworkManager client 网络管理客户端。
1
nmcli [OPTIONS] OBJECT { COMMAND | help }
  • OPTIONS
    • -t[erse]:terse output 简洁的输出。
    • -p[retty]:pretty output 漂亮的输出。
    • -m[ode] tabular|multiline:output mode 输出模式
    • -f[ields] <field1,field2,...>|all|common:specify fields to output 指定要输出的字段
    • -e[scape] yes|no:escape columns separators in values 在值中转义列分隔符
    • -n[ocheck]:不要检查nmcli和NetworkManager版本。
    • -a[sk]:要求缺少参数。
    • -w[ait] <seconds>:设置超时等待整理操作。
  • OBJECT
    • g[eneral]:NetworkManager的一般状态和操作。
    • n[etworking]:整体组网控制。
    • r[adio]:NetworkManager切换开关。
    • c[onnection]:NetworkManager的连接。
    • d[evice]:由NetworkManager管理的设备。
    • a[gent]:NetworkManager秘密代理或polkit代理。

实例

1
2
3
4
5
6
7
8
9
10
nmcli connection show           # 查看当前连接状态。
nmcli connection reload # 重启服务。
 nmcli connection show -active # 显示活动的连接。
nmcli connection show "lan eth0"# 显示指定一个网络连接配置。
nmcli device status # 显示设备状态。
nmcli device show eno16777736 # 显示指定接口属性。
nmcli device show # 显示全部接口属性。
nmcli con up static # 启用static连接配置。
nmcli con up default # 启用default连接配置。
nmcli con add help # 查看帮助。

dhclient

dhclient命令使用动态主机配置协议动态的配置网络接口的网络参数。

1
dhclient(选项)(参数)
  • 选项
    • 0:指定dhcp客户端监听的端口号。
    • -d:总是以前台方式运行程序。
    • -q:安静模式,不打印任何错误的提示信息。
    • -r:释放ip地址。
  • 参数
    • 网络接口:操作的网络接口。

实例

1
2
dhclient -r     #释放IP
dhclient #获取IP

配置文件

Linux中网络相关的配置文件

  • /ect/hosts:配置主机名(域名)和私有IP地址的对应。
  • /etc/sysconfig/network:配置主机名和网关。
  • /etc/sysconfig/network-scripts/ifcfg-eth0:eth0配置文件,eth1则文件名为ifcfg-eth1,以此类推(这里的ethX是网卡接口的名称,也可能是其他名称,例如emX等)
  • /etc/resolv.conf:配置DNS(关于使用哪个DNS服务器的配置)

编辑网卡配置文件

  • 网络配置目录: cd /etc/sysconfig/network-scripts
1
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=9a3c5944-e6fd-421d-b359-32430028b848
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.134.128
NETMASK=255.255.0.0
GATEWAY=192.168.134.2
DNS=192.168.134.2

重启网卡服务

1
systemctl restart network.service

防火墙配置

查看firewall服务状态

1
systemctl status firewalld

管理firewall服务

1
2
3
4
5
6
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop

查看防火墙规则

1
2
firewall-cmd --list-all    # 查看全部信息。
firewall-cmd --list-ports # 只看端口信息。

开启端口

1
firewall-cmd --zone=public --add-port=80/tcp --permanent
  • --zone:作用域。
  • --add-port=80/tcp:添加端口,格式为:端口/通讯协议。
  • --permanent:永久生效,没有此参数重启后失效。

重启防火墙

1
systemctl restart firewalld.service

端口测试

查看端口占用情况

1
nmap {ip-address} -p {port}

查看端口对应的服务

1
netstat -an | grep 3306

查看进程监听的端口

1
lsof -i:80
  • -i:表示网络链接。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!