Linux网络设置的常用命令

本文主要总结配置Linux网络时遇到的问题及解决方法,总结常用的一些命令。通过阅读本文可以解决以下问题:

  • 问题一 设备如果有多个网口,到底哪个连线了呢,用哪个网口呢
  • 问题二 如何为设备配置IP
  • 问题三 配置了IP之后,为何无法用ssh登录呢
  • 问题四 配置IP之后,为何出现ssh登录无法输入密码的情况呢

常用命令介绍

  • ifconfig—-查看网络接口

输入ifconfig命令,回显如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
eth1      Link encap:Ethernet  HWaddr 00:0C:29:33:4A:0C  
inet addr:192.168.4.115 Bcast:192.168.4.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe33:4a0c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8133 errors:0 dropped:0 overruns:0 frame:0
TX packets:5861 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:818322 (799.1 KiB) TX bytes:835205 (815.6 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:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:946 (946.0 b) TX bytes:946 (946.0 b)

如果想获取所有的网口信息,用ifconfig -a命令

  • route—-查看路由表

输入route命令,回显如下:

1
2
3
4
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.4.0 * 255.255.255.0 U 1 0 0 eth1
default localhost 0.0.0.0 UG 0 0 0 eth1

如果想看IP和网关,可以用ip route show命令
命令详细的用法可请看文末的参考资料。

  • ethtool –用于获取以太网卡的配置信息,或者修改这些配置

输入ethtool eth3,回显如下:

各场景及问题解决

  • 问题一 设备如果有多个网口,到底哪个连线了呢,用哪个网口呢

解决方法一:使用ifconfig -a命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
eth1      Link encap:Ethernet  HWaddr 00:0C:29:33:4A:0C  
inet addr:192.168.4.115 Bcast:192.168.4.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe33:4a0c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8133 errors:0 dropped:0 overruns:0 frame:0
TX packets:5861 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:818322 (799.1 KiB) TX bytes:835205 (815.6 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:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:946 (946.0 b) TX bytes:946 (946.0 b)

其中有一行 “UP BROADCAST RUNNING MULTICAST” 里面RUNNING表示该网口在工作!

解决方法二:使用ethtool命令

比如第一部分介绍的,用ethtool eth3,可以看到一行
“Link detected:yes”这也是表示连接状态正常

  • 问题二 如何为设备配置IP

解决方法一:临时配置:一般用命令来配置,马上生效,重启无效
ifconfig 网络接口名称 ip地址/子网掩码长度 ,例如:
ifconfig eth1 192.168.40.20 netmask 255.255.255.0

解决方法二:固定配置:一般是更改配置文件,需要重启网卡生效
网卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-ethX。设置ip地址、子网掩码、默认网关等。 ,例如:

1
2
3
4
5
6
7
8
9
10
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth0 #物理设备名
IPADDR=192.168.1.10 #IP地址
NETMASK=255.255.255.0 #掩码值
NETWORK=192.168.1.0 #网络地址(可不要)
BROADCAST=192.168.1.255 #广播地址(可不要)
GATEWAY=192.168.1.1 #网关地址
ONBOOT=yes # [yes|no](引导时是否激活设备)
USERCTL=no #[yes|no](非root用户是否可以控制该设备)
BOOTPROTO=static #[none|static|bootp|dhcp](引导时不使用协议|静态分配|BOOTP协议|DHCP协议)

然后需要重启网卡

重启所有网卡:service network restart

重启个别网卡:
ifconfig eth1 down
ifconfig eth1 up

  • 问题三 配置了IP之后,为何无法用ssh登录呢
  • 问题四 配置IP之后,为何出现ssh登录无法输入密码的情况呢

这两个问题均和sshd服务有关,一起解决o( ̄︶ ̄)o
SSH(Secure Shell)是一种能够提供安全远程登陆会话的协议,假如希望在远程Linux系统中执行命令,就是通过这个协议!
为什么要强调SSH协议是安全的呢?因为比如ftp、telnet等服务在网络上不会对口令或数据进行加密,那么骇客们真的非常容易就可以截获这些信息(尤其是同局域网内的用户),因此它们在本质是就是不安全的。
sshd服务提供两种安全验证的方法:
基于口令的安全验证:经过验证帐号与密码即可登陆到远程主机。
基于密钥的安全验证:需要在本地生成”密钥对“后将公钥传送至服务端,进行公共密钥的比较。
sshd服务的配置文件解析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
vim /etc/ssh/sshd_config        ###sshd服务的配置文件

Protocol 2 #只支持SSH2协议
Port <端口号> #修改默认端口号
MaxStartups 5 #同时允许5个尚未登录的SSH联机
MaxAuthTries 3   #最大登录尝试次数为3
ServerKeyBits 1024  #将ServerKey强度改为1024比特

PermitEmptyPasswords no  #禁止空密码进行登录
ChallengeResponseAuthentication no #禁用s/key密码
UsePAM no #不通过PAM验证
PermitRootLogin no #禁止root远程登录
PasswordAuthentication no  #不允许密码方式的登录
RSAAuthentication no #不允许RSA认证,只针对SSH1
PubkeyAuthentication yes #允许公钥认证
AuthorizedKeysFile .ssh/authorized_keys #保存公钥的认证文件
UsePrivilegeSeparation yes #用户权限设置
SyslogFacility AUTH #记录SSH登录情况
LogLevel INFO #记录等级为INFO
PrintMotd yes #登录成功后显示/etc/motd 文件的内容
PrintLastLog no #不显示上次登录信息
Compression yes #是否压缩命令
KeepAlive yes #防止死连接
StrictModes yes #接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查
UseDNS no #不使用DNS反解

AllowUsers 用户名 #允许通过远程访问的用户,多个用户以空格分隔
AllowGroups 组名 #允许通过远程访问的组,多个组以空格分隔
DenyUsers 用户名 #禁止通过远程访问的用户,多个用户以空格分隔
DenyGroups 组名 #禁止通过远程访问的组,多个组以空格分隔

如果想要以root用户登录,需要把PermitRootLogin这项后面的no改为yes
如果要用密码登录,需要把PasswordAuthentication这项后面的no改为yes
修改之后需要重启sshd服务:
service sshd restart


参考资料

Linux基础网络设置
ethtool命令
每天一个linux命令(53):route命令
linux route命令的使用详解
《Linux就该这么学》

如果你觉得本文对你有帮助,欢迎打赏