作为一名以 Windows 平台为主的开发者, 在接触和使用 Linux 系统的过程中总会遇到一系列的问题. 每当这时候, 我相信大部分人是和我一样的处理办法, 就是网上各种搜索尝试直到问题解决为止, 而有些问题, 前后不止会遇到一次 , 每次遇到每次搜索. 因为在 Linux 上基本都是使用命令行操作, 各种命令, 工具, 配置, 路径等等不可能完全记得住, 借助搜索引擎也是可以理解, 但是网上的东西杂乱无章, 开放性的问题 (例如网络不通) 通常难以匹配到完美的解决办法, 总结一套自己的办法就显得尤为重要了. 网络配置和 SSH 服务是 Linux 非常基础的功能, 很多时候这 2 个东西搞不起来后面的事情都进行不下去, 趁着最近又重新把这部分实践了一次, 中间也遇到了一些问题, 这里记录一下过程以防日后再次掉坑.
以下步骤的环境均是在 win10 系统中使用 VMware Workstation 搭建的虚拟机, 实测通过.
1, 准备工作
VMware 安装好后会在本地创建 2 个虚拟网络适配器 VMnet1 和 VMnet8, 本文介绍的配置方法是使用 NAT 模式, 所以虚拟机要选择使用 VMnet8 这个网卡:
除此之外, 还要配置 VMnet8 所在的网段(划重点, 要考的):
这里设置的子网 ip 和网关和宿主机没有关系, 可以自己随意设置.
- ## 这里我的配置给自己挖了一个坑... 后面说到
- 2,Ubuntu
开启虚拟机登录到系统中.
Ubuntu 的网络配置文件地址是 / etc/network/interfaces, 所以我们编辑这个文件:
sudo VIM /etc/network/interfaces
然后按 insert 键进入编辑模式, 在文件中输入:
- iface lo .NET loopback
- auto ens33
- iface ens33 .NET static
- address 192.168.174.1
- netmask 255.255.255.0
- gateway 192.168.174.2
这里的 ens33 是虚拟机的网卡名称, 如果不知道自己的网卡名称, 可以输入命令 ifconfig 来查看. 第 3 行中的 static 即表示使用静态 ip 配置, 相对应的是 dhcp(动态配置),address 是要设置的 ip 地址, 必须是在前面 VMnet8 所设置的网段中, 剩下的网关和子网掩码和 VMnet8 的一致.
编辑完之后, 按 ECS 退出编辑, 再输入: wq 回车保存文件退出, 输入 sudo /etc/init.d/networking restart 或者 sudo service networking restart 重启网卡(不行就 reboot 重启机器),ifconfig 查一下 ip 是否已经生效.
试一下网络通了没:
ping www.baidu.com
提示 unkown host, 原因是没有配置 DNS 地址, 查看一下 DNS 配置文件:
cat /etc/resolv.conf
这里面空空如也, 但是却不能直接在这个文件里配置, 因为注释里面写了: 该文件是 resolvconf 程序动态创建的, 如果手动编辑的话将会配覆盖. 那么如何设置 DNS 呢, 有 2 种办法.
第一种是在 interfaces 中设置一个 dns-nameservers 参数:
dns-nameservers 8.8.8.8
第二种是设置 dns 的配置文件:
sudo VIM /etc/resolvconf/resolv.conf.d/base
在这个文件中加入:
nameserver 8.8.8.8
退出保存后重启网卡, 重新 ping 一下百度域名, 连网成功了.
重新查看 resolv.conf,DNS 已经设置成功.
这里的 8.8.8.8 是谷歌提供的 DNS 服务, 其他的供应商地址可以参考以下图片(来自于网络):
再 ping 一下宿主机地址, 也没问题:
于是开始安装 SSH:
sudo apt-get install openssh-server
启动 SSH:
sudo service SSH start
查看是否启动成功:
一切准备就绪, 满心欢喜地打开 xshell 准备连接虚拟机, 却发现怎么都连不上:
- Connecting to 192.168.174.1:22...
- Could not connect to '192.168.174.1' (port 22): Connection failed.
检查 22 端口也已经开启, 其他配置也都正常.
尝试 ping 一下虚拟机, 发现请求超时:
网上各种搜索, 最后怀疑是虚拟网卡的 ip 设置问题, ipconfig 查看网卡信息确实有问题:
查看 VMnet8 的 ip 配置, 发现是 DHCP 自动获取的, 于是手动指定一个 IP 和网关, 与前面 VMware 网络编辑器中的一致(划重点, 要考的):
再重新 ping 一下虚拟机地址 192.168.174.1, 终于正常了. 再次使用 xshell 连接, 发现还是不行, 怀疑是机器本身环境的问题, 于是新开一台虚拟机, ip 设置为 192.168.174.3, 其他全部和前面的一致, xshell 连接成功. 回头再次折腾第一台机器, 修改 ip 为 192.168.174.4, 问题解决.
那么问题来了, 网关是 174.2,174.3 和 174.4 都可以, 偏就 174.1 不行, 啥原因?
3,CentOS
由于都是基于 Linux 内核, 所以 CentOS 的配置也大同小异. 在 CentOS 中, 每个网关对应了自己的配置文件, 所以第一步先查看网卡名称找到需求修改的配置文件:
ip addr
或者
ifconfig
配置文件的存放路径是 / etc/sysconfig/network-scripts, 我这里的网卡名称是 ens33, 所以对应的配置文件是 ifcfg-ens33, 开始修改文件:
sudo VIM /etc/sysconfig/network-scripts/ifcfg-ens33
新增或替换以下配置项:
- BOOTPROTO="static"
- ONBOOT="yes" #开机启用
- IPADDR=192.168.174.5
- GATEWAY=192.168.174.2
- NETMASK=255.255.255.0
- DNS1=8.8.8.8
各项参数的意义和 Ubuntu 中的一致. 然后重启网络服务:
sudo systemctl restart network
或者
sudo service network restart
再次 ip addr, 发现 ip 已经生效. 然后 ping 宿主机和 ping 百度, 一切都正常:
开始安装 SSH 服务:
sudo yum install openssh-server
修改配置文件:
sudo VIM /etc/SSH/sshd_config
把 Port=22 的注释去掉, 如果要使用 root 用户登录, 就把 PermitRootLogin 设置为 yes,:wq 保存退出. 启动 SSH:
sudo systemctl start sshd.service
加入开机自启动:
sudo systemctl enable sshd.service
打开 xshell 连接, OK.
4, 总结
经历了前面基础工作的铺垫, CentOS 配置起来非常顺利, 总结一下主要有以下几个重点:
虚拟网卡 VMnet8,VMware 网络配置, 虚拟机网络配置这几处的网段和网关要一致, 基本能避免 90% 以上异常.
重启服务甚至重启系统来使配置生效.
如果配到后面怎么都不行, 把网络编辑器恢复到默认设置然后重新开始.
来源: https://www.cnblogs.com/hohoa/p/11409806.html