今天我学了linux的网络配置。
首先是检查网络的配置,可以确定网络接口、网络地址。
显示当前所有接口的ip地址和子网掩码 |
ip addr |
也可以针对某一网卡显示信息,比如第一个网卡,就是eth0
显示第一块网卡的的信息 |
ip -s link show eth0 |
发现连接问题后,可以使用ping测试连接性
ping -c3 172.25.25.254
针对ip命令的相关参数,我在网上找了一下,附上来,比如-s 是什么意思 link是什么意思 -c3是什么意思
ip命令用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道,是Linux下较新的功能强大的网络配置工具。 语法 ip(选项)(参数) 选项 -V:显示指令版本信息; -s:输出更详细的信息; -f:强制使用指定的协议族; -4:指定使用的网络层协议是IPv4协议; -6:指定使用的网络层协议是IPv6协议; -0:输出信息每条记录输出一行,即使内容较多也不换行显示; -r:显示主机时,不使用IP地址,而使用主机的域名。 -c count是数量,-c3 即发三个ping 包 link 这个参数选项前面不加- 意思是设备硬件的MAC地址,为什么不加- 我也不知道哩 好像是和show或ip一样是个命令吧。我是这样理解的。 参数 网络对象:指定要管理的网络对象; 具体操作:对指定的网络对象完成具体操作; help:显示网络对象支持的操作命令的帮助信息。 比如我找到的这个博客举的例子: 用ip命令显示网络设备的运行状态 [[email protected] ~]# 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 显示更加详细的设备信息 [[email protected] ~]# 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 显示核心路由表 [[email protected] ~]# 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 显示邻居表 [[email protected] ~]# 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 |
大神们的命令可以通过格式化地,进行表示,我却不知道如何去格式化,更好的显示出来易读性。我要学习的地方很多。
其它在检查网络配置中,使用的命令和大神举的例子差不多,用到了 ip addr 显示所有接口的当前ip和掩码,ip -s link show eth0 输出第一块网卡更详细的信息,其中包含了设备的MAC,从这里可以看出link show 和ip一样,是命令。我是这样理解的。 ip route ,显示路由信息。 ping -c3 172.25.25.254 向ip为172.25.25.254 发送3个ping包。
有一条奇怪的命令,书上没有说,却直接用了。我也闹不懂这是什么意思。
说是显示本地系统和classroom.example.com这个主机之间的所有跃点,啥子是跃点?可能是翻译的问题。不懂。看下这条奇怪的命令: $ tracepath classroom.example.com |
下面又出现了一条没有说明的命令,这个真的莫名。说是显示本地系统上侦听的TCP套接字: $ ss -lt
上面这2条命令,不知道要说明什么。
下面就学到了用nmcli 配置网络:使用nmcli 和 NetworkManager管理网络设置和设备。我以为nmcli和NetworkManager是2条命令,可是全篇只看到使用nmcli,这里也很困惑。
查看网络信息,如果要只是列出活动的连接,可以在下面命令后面加--active 选项 |
nmcli con show |
指定一个设备,查看连接信息:nmcli con show "static-eth0"
显示设备状态和详细信息:nmcli dev status
显示指定设备状态和详细信息:nmcli dev show eth0
下面就形如创建网络连接,使用nmcli命令
书上说:nmcli 创建网络连接时,参数的顺序很重要,首先是共用参数,必须包含类型接口。其次指定任何与类型相关的参数,最后指定IP地址前缀和网关信息。还说可以为一个设备指定多个IP。其它的设置比如DNS可以在连接建立好后,再个修改。
例子1:定义一个名为"default"的新连接,使用DHCP通过eth0网卡用以太网的连接方式自动连接,# nmcli con add con-name "default" type ethernet ifname eth0
例子2:建立一个名为"static"的连接,指定IP和网关,不要自动连接。 # nmcli con add con-name "static" ifname eth0 autoconnect no type ethernet ip4 172.25.25.254/24 gw172.25.25.254 这条命令我基本能看懂,就是不知道gw是什么意思,我也不知道去哪里找,man nmcli 也没有找到。gw是什么意思,看上去像DNS或者是其它意思吧。/24是指1后面有24个0,掩码的意思。
下面就是在系统启动时把“通过DHCP自动连接”更改为静态连接,可能设置好ip4,激活一下,就算静态连接了,不过看到有的教程说,系统启动有效,需要更改配置文件。不说了,先把这条命令写出来过# nmcli con up "static"
附一下网上找到的配置文件目录:
网络配置文件: /etc/sysconfig/network 说是全局设置,默认里面啥也没有,可以添加全局默认网关 /etc/hostname 用nmtui修改hostname后,主机名保存在这里 /etc/resolv.conf 保存DNS设置,不需要手工改,nmtui里面设置的DNS会出现在这里 /etc/sysconfig/network-scripts/ 连接配置信息 ifcfg 文件 /etc/NetworkManager/system-connections/ VPN、移动宽带、PPPoE连接 |
书上又说,再改回DHCP连接: # nmcli con up "default" , 这是上面2个例子的练习,学的有点懵懂。没有基础真是太难了。
书上有个提示说如果静态连接丢失,默认连接会自动连接上去。防止自动连接的方法是,用管理员身份,禁用某一接口:nmcli dev disconnect DEVICENAME,还有些wifi类型、网桥啥子的类型,可以用nmcli con add help来查看类型的选择。上面的例子只用到了以太网。
下面就进入了另一个练习场景:
通过nmcli修改网络接口:
用到了nmcli con mod
用nmcli con show "[ID]" 查看连接的列表
比如查看static的连接列表,#nmcli con show "static"
例子:
关闭自动连接: # nmcli con mod "static" connection.autoconnect no
指定DNS服务器: # nmcli con mod "static" ipv4.dns 172.25.25.254
书上提到说可以用+/-来增加或删除一些配置参数值。比如增加一条辅助的DNS
nmcli con mod "static" +ipv4.dns 8.8.8.8
替换静态IP和网关
# nmcli con mod "static" ipv4.addresses 172.25.25.10/24 172.25.25.254" 这条命令可能是把前面的换成后面,就是后面的172.25.25.254被覆盖了吧。书上没写,我在实验中,试了,也没闹清楚。
后面又增加了一条没有网关的辅助IP . # nmcli con mod "static" +ipv4.addresses 10.10.10.10/16
保存一,要激活一下连接,才能使用。 # nmcli con up "static"
下面列一个nmcli的命令摘要
nmcli dev status | 列出所有设备 |
nmcli con show | 列出所有连接 |
nmcli con up "<ID>" | 激活连接 |
nmcli con down "<ID>" | 取消激活连接,如果自动重新连接值:yes,则连接将重新启动。重新启动就是重新连接吧,也就是说要取消连接,先保证配置文件值为no,在哪个文件修改不知道,使用nmcli con mod "<ID>" connection.autoconnect no 应当可以吧,有空我再问问百度 |
nmcli dev dis <DEV> | 中断接口,并且暂时禁用自动连接 |
nmcli con off ... | 禁用所有管理的接口 |
nmcli con add ... | 添加新连接 |
nmcli con mod "<ID>"... | 修改连接 |
nmcli con del "<ID>" | 删除连接 |
说了半天,后面又说,可以图形化编辑。进入图形化编辑命令是:nm-connection-editor
不懂这本书的作者要表述什么。难道我遇到大坑神了???!