46d8dc69074fe49dd9dbeec9a834b343.gif

作者 | JiekeXu

来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)

大家好,我是JiekeXu,很高兴又和大家见面了,今天和大家一起来怎么让虚拟机可以上外网?欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!

今天使用 VMware 搭建完一台 CentOS7 的 Linux 虚拟机后,发现不能够使用 CRT 远程链接。报错“The remote system refused the connection”。

97a36ecef96a30face6cadcea4915c49.png

但是在虚拟机里打开一个终端便可以正常 ssh 远程登录。

7759ef72561fca8dc8a86be3a8fe5f91.png


相关设置如下

[root@localhost network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:73:11:51 brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.11/24 brd 192.168.75.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe73:1151/64 scope link 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:42:ee:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:42:ee:56 brd ff:ff:ff:ff:ff:ff
sshd 配置如下
vim /etc/ssh/sshd_condig
LoginGraceTime 0
PermitRootLogin yes
StrictModes yes
#MaxAuthTries 6
MaxSessions 50


UseDNS no


systemctl restart sshd.service
systemctl stop   firewalld
systemctl status firewalld

网卡配置如下

YPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
NAME="ens33"
UUID="12550792-de37-403c-b072-7e9e81c7f97b"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.75.11
GATEWAY=192.168.75.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8
NM_CONTROLLED="no"

检查了 sshd 服务,又重新安装了 openssh 服务,‘yum install openssh -y’

[root@localhost ~]# ps -e | grep ssh
  9168 ?        00:00:00 sshd
 19105 ?        00:00:00 ssh-agent


[root@localhost ~]# /bin/systemctl status sshd.service
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2022-05-04 04:49:51 PDT; 1h 3min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 9168 (sshd)
    Tasks: 1
   CGroup: /system.slice/sshd.service
           └─9168 /usr/sbin/sshd -D


[root@localhost network-scripts]# cp /etc/selinux/config /etc/selinux/config_`date +"%Y%m%d_%H%M%S"`&& sed -i 's/SELINUX\=enforcing/SELINUX\=disabled/g' /etc/selinux/config
[root@localhost network-scripts]# cat /etc/selinux/config


# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 




[root@localhost network-scripts]# setenforce 0
[root@localhost network-scripts]# getenforce
Permissive
[root@localhost network-scripts]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          disabled
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31
[root@localhost network-scripts]# reboot


[root@localhost ~]# sestatus
SELinux status:                 disabled

相关服务均正常,Linux 防火墙也是关闭的状态,SELinux 也是关闭了,折腾了两个多小时,一层层抽丝剥茧,慢慢发现问题。

起初,网卡配置是基于以前 RAC 虚拟机配置修改的,但是再一次检查时发现少了一行“USERCTL=no”,而且首行 TYPE=“Ethernet” 由于粗心大意粘贴时少写一个字母“T”,重启网络服务时居然没有异常,也没能及时发现,将这两处错误修改之后,重启了主机也是无果。

a00e3c281a771963dc53030d0a6094a0.png

USERCTL=no #是否允许非 root 用户控制该设备,设置为 no,只能用 root 用户更改。


附 Linux 网卡配置文件详解:

DEVICE=eth0 #指出设备名称
NM_CONTROLLED=yes #network mamager的参数,实时生效,不需要重启
ONBOOT=yes #设置为yes,开机自动启用网络连接
IPADDR=192.168.75.12 #IP地址
BOOTPROTO=none #设置为none禁止DHCP,设置为static启用静态IP地址,设置为dhcp 开启DHCP服务
NETMASK=255.255.255.0 #子网掩码
DNS1=8.8.8.8 #第一个dns服务器
TYPE=Ethernet #网络类型为:Ethernet
GATEWAY=192.168.75.2 #设置网关
DNS2=8.8.4.4 #第二个dns服务器
IPV6INIT=no #禁止IPV6
USERCTL=no #是否允许非root用户控制该设备,设置为no,只能用root用户更改
HWADDR=00:0C:29:2C:E1:0F #网卡的Mac地址
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
NAME="eth0" #定义设备名称

最后,经过必应各种搜索,说 IP 冲突也会出现这种情况,于是乎检查了 VMware 配置的 IP 地址,net1 和 net8 查看了也都是 32.1 和 75.1 没有地址冲突,瞬间陷入了僵局,不知该如何查看了,休息片刻,补充弹药后继续排查。

1226e0c006dd42f2f61bc104ae70db47.png

终于想到了一个办法,既然此 75.11 的 IP 不能链接,那我改个 IP 试试呢,说改就改,将 75.11 改为 75.13 之后,重启网络,使用 CRT 便可以链接了。

[root@localhost network-scripts]# more  /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
NAME="ens33"
UUID="12550792-de37-403c-b072-7e9e81c7f97b"
DEVICE="ens33"
ONBOOT="yes"
USERCTL=no
IPADDR=192.168.75.13
GATEWAY=192.168.75.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8
NM_CONTROLLED="no"
[root@localhost network-scripts]# 
[root@localhost network-scripts]# service network restart
Restarting network (via systemctl):                        [  OK  ]

5a991c69b7e639dfd11aec2fce211ffa.png

到这里才恍然大悟了,真的是由于 IP 地址冲突引起的,前面只检查了 VMware 的 IP 地址设置,没有检查 VBOX 的 IP 地址设置,经查看发现 IP 地址确实是 192.168.75.11 。。。

1f789f92d571e56f6925aafe986414e8.png

aff582f9210bbd3ade17cd6464fe3e42.png

地址冲突会导致 CRT 无法远程连接,报错却是拒绝连接,现在想来也是,75.11 是 VBOX 的虚拟地址,当然也就无法使用 CRT 远程连接,在虚拟机里面设置 IP 地址为 75.11 也不会有地址冲突,他两属于不同的局域网环境,在虚拟机里使用 ssh root@192.168.75.11 也不会出此局域网,地址不会有冲突。就这样一个小小的问题,花了两个多小时,还是粗心大意导致的,以后,这类问题要多多注意,在此记录一番,谨防下次再犯。

be14fff7d244f818a45d91aa5bee352d.png


最终解决办法

将 VBOX 虚拟机地址修改为其他 IP 地址,例如 75.254 或者其他网段也可以,可根据实际情况设置。将 Linux 端 IP 地址改回 75 11 即可。

66aa5f0c81dc9047956532a24fab1e9b.png

7935b5745346997115eb3fbda241a5f4.png


虚拟机外网访问配置

最后,说一下 Linux 虚拟机配置可以上网的方法,虚拟机设置里网络适配器选择【NAT】模式,查看宿主机无线适配器关于 net8 的网络配置,然后 VM 里选择【编辑】——>【虚拟网络编辑器】——>【DHCP设置】,子网 IP 需要和前面看到的在同一网段里,然后选择 DHCP 自动获取。

0df2ceaba4abe7fe238debad60f73777.png

43d63092303b726a35866f734d60755f.png

然后,网卡配置如下:

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# more ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
NAME="ens33"
UUID="12550792-de37-403c-b072-7e9e81c7f97b"
DEVICE="ens33"
ONBOOT="yes"
USERCTL=no
IPADDR=192.168.75.11
GATEWAY=192.168.75.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8
NM_CONTROLLED="no"

然后虚拟机便可以上网了。

[root@localhost network-scripts]# ping www.baidu.com
PING www.a.shifen.com (39.156.66.14) 56(84) bytes of data.
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=1 ttl=128 time=9.37 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=2 ttl=128 time=12.0 ms
64 bytes from 39.156.66.14 (39.156.66.14): icmp_seq=3 ttl=128 time=13.8 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 9.379/11.773/13.896/1.853 ms
[root@localhost network-scripts]# ping cn.bing.com
PING china.bing123.com (202.89.233.100) 56(84) bytes of data.
64 bytes from 202.89.233.100 (202.89.233.100): icmp_seq=1 ttl=128 time=10.3 ms
64 bytes from 202.89.233.100 (202.89.233.100): icmp_seq=2 ttl=128 time=9.55 ms
64 bytes from 202.89.233.100 (202.89.233.100): icmp_seq=3 ttl=128 time=54.8 ms
64 bytes from 202.89.233.100 (202.89.233.100): icmp_seq=4 ttl=128 time=11.2 ms
^C
--- china.bing123.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 9.552/21.507/54.879/19.277 ms

参考链接

https://www.cnblogs.com/huangyj25/p/14896771.html


❤️ 欢迎关注我的公众号,来一起玩耍吧!!!

————————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————

01f6bfa57f0e6f9452591a81c28c7ad5.gif

Oracle 表碎片检查及整理方案

2021 年公众号历史文章合集整理

2020 年公众号历史文章合集整理

我的 2021 年终总结和 2022 展望

Oracle 查询表空间使用率超慢问题一则

国产数据库|TiDB 5.4 单机快速安装初体验

Oracle ADG 备库停启维护流程及增量恢复

Oracle 19c 使用数据泵如何导入导出 PDB 用户

6c96a3fe22cfcd89153eade8ceaff3a7.png

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐