Cisco PT 案例三:端口使能/禁用

环境

  • Cisco Packet Tracer 5.3
  • Windows 10

    操作

    操作:按照如图所示连接拓扑图
    image.png

    
    # 进入特权模式
    Switch>enable
    # 进入全局配置模式
    Switch#configure terminal
    Enter configuration commands, one per line.  End with CNTL/Z.
    Switch(config)#
    # 进入端口
    Switch(config)#interface FastEthernet0/1
    Switch(config-if)#
    # 禁用
    Switch(config-if)#shutdown

%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to administratively down Switch(config-if)# %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down

使能

Switch(config-if)#no shutdown

%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up

Switch(config-if)#

Cisco PT 案例二:为路由器配置并连接SSH

1. 案例目标

通过本案例,你可以掌握如下技能:

  1. 配置 SSH

  2. 使用 SSH 访问路由器

    2. 背景知识

    过去对路由器的远程管理访问一般使用 TCP 端口 23 上的 Telnet。但 Telnet 是在安全不是问题的年代开发的。为此,所有 Telnet 流量以明文的形式转发。 SSH 已经替代了 Telnet,作为远程路由器连接管理的最佳工具,它提供强大的私密性和会话的集成。SSH 使用 TCP 端口 22。它提供类似出站 Telnet 连接的功能,但连接是加密的。通过认证和加密,SSH 允许在不安全的网络中进行安全的通信。想在路由器上激活 SSH,必须配置以下参数:

  • Hostname(主机名)

  • Domain name(域名)

  • Asymmetrical keys(非对称密钥)

  • Local authentication(本地验证)

    3. 设备与拓扑

    环境:Cisco Packet Tracer 5.3
    设备:1 台普通 PC,1 台 2950T-24 交换机,2 台 2811 路由器。
    拓扑:如下图。
    image.png

    4. 操作步骤

    步骤 1:按拓扑图添加设备与连接。
    步骤 2:配置路由器接口。

    打开路由器的 Config配置页面,按拓扑图上的标注分别配置两个路由
    器的显示名、主机名和接口 Fa0/0 的 IP 地址,并注意激活该接口。
    步骤 3:配置 PC 的 IP 地址和网关。

    用 PC 的 IP configuration 程序配置其 IP 地址和网关。
    步骤 4:在 R1 上配置 SSH
    1) 配置域名

R1#conf t 
R1(config)#ip domain-name cisco.com 
R1(config)#




2) 配置非对称密钥

R1(config)#crypto key generate rsa 
# 当提示密钥长度时,输入 1024。注:缺省为 512。



3) 配置用于认证的登录用户名及口令

R1(config)#username admin password cisco


4) 配置 SSH 版本

R1(config)#ip ssh version 2
  1. 配置 SSH 会话最大空闲超时值和 SSH 连接认证重试次数
    R1(config)#ip ssh time-out ?  
    <1-120> SSH time-out interval (secs)  
    R1(config)#ip ssh time-out 60 //最大空闲超时:60 秒
    R1(config)#ip ssh authentication-retries ?  
    <0-5> Number of authentication retries  
    R1(config)#ip ssh authentication-retries 2 //认证重试次数:2 次
    R1(config)#
  2. 在 VTY 线路上禁用 Telnet,并激活 SSH。
    R1(config)#line vty 0 4  
    R1(config-line)#no transport input all //禁用所有流量
    R1(config-line)#transport input ssh //允许 SSH 流量
    R1(config-line)#login local //要求本地认证

    步骤 5:在 R2 上重复步骤 4,配置 SSH。
    步骤 6:在 R1 上验证 SSH 的配置及运行
    1) 验证 SSH 版本及其他设置

    R1#sh ip ssh  
    SSH Enabled - version 2.0  
    Authentication timeout: 60 secs; Authentication retries: 2  
    R1#
  3. 验证 SSH 是否在运行
    R1#sh ssh  
    %No SSHv2 server connections running.  
    %No SSHv1 server connections running.  
    R1#

    步骤 7:在 R2 上重复步骤 6,验证 SSH 的配置及运行。
    步骤 8:测试 SSH
    1) 在 PC0 的命令行窗口中对 R1 和 R2 分别进行 telnet 和 ssh 的测试,
    如图 5-1。telnet 应失败,而 ssh 应成功。

    
    PC>telnet 192.168.1.1
    Trying 192.168.1.1 ...Open

[Connection to 192.168.1.1 closed by foreign host] PC>tennet 192.168.1.2 Invalid Command.

PC>ssh -l admin 192.168.1.1 Open Password:

R1>exit

![image.png](https://cdn.nlark.com/yuque/0/2020/png/376635/1592190949265-0d5739cc-5da0-48b6-a6d2-17e8d57e751f.png#align=left&display=inline&height=514&margin=%5Bobject%20Object%5D&name=image.png&originHeight=514&originWidth=641&size=28028&status=done&style=none&width=641)<br />2) 在 R1 中对 R2 进行测试,telnet 应失败,而 ssh 应成功。反之亦然。<br />如图 5-2。
```bash
R1>telnet 192.168.1.2
Trying 192.168.1.2 ...Open

[Connection to 192.168.1.2 closed by foreign host]
R1>ssh -l admin 192.168.1.2
Open
Password: 

R2>

image.png

Cisco PT案例一:为交换机配置并连接TELNET

Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

环境

  • Cisco Packet Tracer 5.3
  • Windows 10

    操作

    操作:按照如图所示连接拓扑图
    image.png
    (1)配置PC IP

    PC0 设置
    192.168.1.2/24
    PC1 设置
    192.168.1.3/24

    (2)配置交换机VLAN1 IP

    
    /* part1 为vlan配置ip并开启vlan */
    Switch>enable
    Switch#configure terminal
    Enter configuration commands, one per line.  End with CNTL/Z.
    Switch(config)#interface vlan 1
    Switch(config-if)#ip address 192.168.1.1 255.255.255.0
    Switch(config-if)#no shutdown

%LINK-5-CHANGED: Interface Vlan1, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan1, changed state to up Switch(config-if)#

/ Part2 查看已配置的IP / Switch(config-if)#^Z Switch# %SYS-5-CONFIG_I: Configured from console by console

Switch#show running-config … interface Vlan1 ip address 192.168.1.1 255.255.255.0

/ Part3 开启Vlan / Switch#conf t Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#interface vlan 1 Switch(config-if)#no shutdown

/ Part4 查看Vlan状态 / Switch(config-if)#^Z Switch# %SYS-5-CONFIG_I: Configured from console by console

Switch#show interfaces vlan 1 Vlan1 is up, line protocol is up …

**(3)配置交换机本地登录口令**

/ Part 1 设置明文密码/ Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#enable password 123 // 注:取消密码可用no enable password

/ Part 2查看设置的密码 / Switch(config)#^Z Switch# %SYS-5-CONFIG_I: Configured from console by console

Switch#show running-config … enable password 123 …

**(4)配置交换机远程登陆及验证**

Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#line vty 0 Switch(config-line)#password 123 //(Telnet密码为123) Switch(config-line)#login local //(login是开启远程登录密码验证,login local不但要求TELNET密码,还要求提供用户名) Switch(config-line)#

**(5)添加可远程登陆交换机的用户**

/ Part 1 添加用户 / Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#line vty 0 Switch(config-line)#password 123 Switch(config-line)#login local Switch(config-line)# Switch(config-line)#exit Switch(config)#username admin password admin

/ Part 2 查看添加的用户 / Switch(config)#exit Switch# %SYS-5-CONFIG_I: Configured from console by console

Switch#show running-config … username admin password 0 admin …


<br />**(6)测试连接**

// 在PC0的CMD中测试 / Part 1 Ping交换机 / PC>ping 192.168.1.1

Pinging 192.168.1.1 with 32 bytes of data:

Reply from 192.168.1.1: bytes=32 time=5ms TTL=255 Reply from 192.168.1.1: bytes=32 time=5ms TTL=255 Reply from 192.168.1.1: bytes=32 time=6ms TTL=255 Reply from 192.168.1.1: bytes=32 time=6ms TTL=255

Ping statistics for 192.168.1.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 5ms, Maximum = 6ms, Average = 5ms

/ Part 2 Telnet 连接交换机 / PC>telnet 192.168.1.1 Trying 192.168.1.1 …Open

User Access Verification

Username: admin Password: Switch>

**(7)配置多用户连接**

// 在PC0连接的前提下,再使用PC1尝试连接 / Part 1 PC1 Ping Switch / PC>ping 192.168.1.1

Pinging 192.168.1.1 with 32 bytes of data:

Request timed out. Reply from 192.168.1.1: bytes=32 time=6ms TTL=255 Reply from 192.168.1.1: bytes=32 time=6ms TTL=255 Reply from 192.168.1.1: bytes=32 time=5ms TTL=255

Ping statistics for 192.168.1.1: Packets: Sent = 4, Received = 3, Lost = 1 (25% loss), Approximate round trip times in milli-seconds: Minimum = 5ms, Maximum = 6ms, Average = 5ms

/ Part 2 PC1 Telnet 连接Swithc / PC>telnet 192.168.1.1 Trying 192.168.1.1 …Open

[Connection to 192.168.1.1 closed by foreign host] // 连接失败,因为交换机vty设置只能同时打开一个会话,下面设置一下,使两台PC可同时访问

/ Part 3 修改Tenlet配置 / // 可直接在PC0直接进行 Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#line vty 0 1 Switch(config-line)#password 123 Switch(config-line)#^Z

/ Part 4 重新尝试Part 2 / PC>telnet 192.168.1.1 Trying 192.168.1.1 …Open

User Access Verification

Password: Switch> // 成功

解决ClashR打开配置空白

由于做程序设计常常会需要国外网站,因此一个靠谱的代理非常有必要。

此前写过一篇 私有 vpn 搭建工具集合及靠谱的 vpn 提供商.

最近发现 ClashR 这款很好用的代理客户端,客户端可以在我的资源站下载:Frytea’s Res.

问题重现

在这里记录一个最近遇到的问题,打开后配置界面一片空白,搜寻一圈后在GitHub找到解决方案,在此简单记录。

解决方案

删除Home Directory目录下Profiles文件夹,重启APP。

image8f7cfd62e8fca98f.png

在常规界面的用户文件夹,点击进入即可。

参考文献

解决Win10下H3C网络设备模拟器无法启动问题

由于工作学习需要,需在win10上安装H3C网络设备模拟器,但无奈安装好后各种启动不起来。

image9dc86ee623493f66.png

查看日之后发现报错如下:

Traceback (most recent call last):
  File "HCLUpdate.py", line 9, in 
<module>
  File "Ui_PopUp.pyc", line 10, in 
<module>
  File "PyQt4\QtGui.pyc", line 12, in 
<module>
  File "PyQt4\QtGui.pyc", line 10, in __load
ImportError: DLL load failed: 操作系统无法运行 %1。

刚开始以为是Python问题,其实这个方向是错误的。

后来在贴吧找到答案,这其实是软件兼容性问题,给的解决方案是采用老版系统运行,或是采用兼容性模式运行。

image92641013e214747a.png

保存运行,成功启动!

image56ee5bd43720f576.png

参考文献

【ZMQ】第一个C服务器

技术背景

ØMQ (也拼写作ZeroMQ,0MQ或ZMQ),号称号称是“史上最快的消息队列”,基于c语言开发。ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。

作为C开发人员有两个选择 CZMQlibzmq (低级zeromq库)。

在这里简单记录 CentOS 下从零安装ZMQ相关依赖、解决各种问题最终实现一个最简单的请求-应答服务器-客户端效果。

ZeroMQ 在 centos下的安装

1)下载ZeroMQ

执行命令:

wget http://download.zeromq.org/zeromq-4.0.4.tar.gz

2)解压ZeroMQ

$ tar zvxf zeromq-4.0.4.tar.gz
$ mv zeromq-4.0.4 zeromq
$ cd zeromq

3)安装依赖

$ yum install libtool
$ ./autogen.sh 

4)编译安装

$ ./configure
......
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/chuser/zeromq':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

提示缺少C编译器,先安装GCC

$ sudo yum install gcc

安装OK!再次执行

$ ./configure
......
checking whether the C++ compiler works... no
configure: error: Unable to find a working C++ compiler

提示缺少C++编译器,先安装G++。

$ sudo yum install gcc-c++ 

安装OK!再次执行

$ ./configure
$ make
$ sudo make install

ZeroMQ安装成功!

libzmq 在 CentOS 下的安装

libzmq开源仓库: https://github.com/zeromq/libzmq

# 对于 CentOS 8,请以根用户 root 运行下面命令:
cd /etc/yum.repos.d/
wget https://download.opensuse.org/repositories/network:messaging:zeromq:release-stable/CentOS_8/network:messaging:zeromq:release-stable.repo
yum install zeromq-devel

# 对于 CentOS 7,请以根用户 root 运行下面命令:
cd /etc/yum.repos.d/
wget https://download.opensuse.org/repositories/network:messaging:zeromq:release-stable/CentOS_7/network:messaging:zeromq:release-stable.repo
yum install zeromq-devel

# 对于 CentOS 6,请以根用户 root 运行下面命令:
cd /etc/yum.repos.d/
wget https://download.opensuse.org/repositories/network:messaging:zeromq:release-stable/CentOS_6/network:messaging:zeromq:release-stable.repo
yum install zeromq-devel

Demo

(来源:https://zeromq.org/languages/c/#libzmq)

Server:

#include <zmq.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>

int main (void)
{
    //  Socket to talk to clients
    void *context = zmq_ctx_new ();
    void *responder = zmq_socket (context, ZMQ_REP);
    int rc = zmq_bind (responder, "tcp://*:5555");
    assert (rc == 0);

    while (1) {
        char buffer [10];
        zmq_recv (responder, buffer, 10, 0);
        printf ("Received Hello\n");
        sleep (1);          //  Do some 'work'
        zmq_send (responder, "World", 5, 0);
    }
    return 0;
}

Client:

Copy
#include <zmq.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>

int main (void)
{
    printf ("Connecting to hello world server…\n");
    void *context = zmq_ctx_new ();
    void *requester = zmq_socket (context, ZMQ_REQ);
    zmq_connect (requester, "tcp://localhost:5555");

    int request_nbr;
    for (request_nbr = 0; request_nbr != 10; request_nbr++) {
        char buffer [10];
        printf ("Sending Hello %d…\n", request_nbr);
        zmq_send (requester, "Hello", 5, 0);
        zmq_recv (requester, buffer, 10, 0);
        printf ("Received World %d\n", request_nbr);
    }
    zmq_close (requester);
    zmq_ctx_destroy (context);
    return 0;
}

将文件存入以libzmq_server.clibzmq_client.c命名的文件。

运行下列命令编译:

gcc libzmq_server.c -o libzmq_server -lzmq
gcc libzmq_client.c -o libzmq_client -lzmq

若出现错误,请移步异常问题记录区寻找答案

分别在两个终端运行,若成功,效果如下:

$ ./libzmq_server
Received Hello
Received Hello
Received Hello
Received Hello
Received Hello
Received Hello
Received Hello
Received Hello
Received Hello
Received Hello
$ ./libzmq_client
Connecting to hello world server…
Sending Hello 0…
Received World 0
Sending Hello 1…
Received World 1
Sending Hello 2…
Received World 2
Sending Hello 3…
Received World 3
Sending Hello 4…
Received World 4
Sending Hello 5…
Received World 5
Sending Hello 6…
Received World 6
Sending Hello 7…
Received World 7
Sending Hello 8…
Received World 8
Sending Hello 9…
Received World 9

异常记录

undefined reference to `zmq_sendmsg’

解决方案: 编译时带上 -lzmq

例如:gcc -o hello hello.c -lzmq

error while loading shared libraries: libzmq.so.3

方法1:

找一下动态文件安装到哪里了:

$ whereis libzmq.so.3

$ find / -name libzmq.so.3

/usr/local/lib 加到共享库配置文件 /etc/ld.so.conf 中,该方法一劳永逸,但是需要有操作权限

# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
# echo "/usr/local/lib">>/etc/ld.so.conf
# ldconfig

再执行成功.

方法2:设置环境变量LD_LIBRARY_PATH,适合没有操作权限时使用

# vi ~/.bash_profile 

编辑你当前用户的用户目录下的.bash_profile文件 在文件后面加上:

export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH

保存并关闭文件

# source ~/.bash_profile 

使该文件改动生效(每次登录该用户时也会自动加载该文件,使文件生效) 执行成功

C程序头文件引用问题

一直没有搞清楚头文件引用 “” 和 的区别,今天偶然查到:

  • first:include 引用系统头文件一般用。
  • second:include”fileName.h” 引用自己定义的头文件一般用” “。

区别是首先去系统中去找,” “则在自己当前文件夹找。

一般情况下系统头文件在 usr/include/中。

参考文献

Minecraft 从安装到入门

近期才入坑 Minecraft ,自建了服务器,写了一篇文章记录服务器配置过程:适当愉悦,自建 Minecraft 服务器。 高深的东西咱也不懂,就感觉一群朋友在一起创造自己的世界挺有意思的,撰文目的在于指导像我一样的从未接触过 Minecraft 的新手进入 Minecraft 的世界,并会持续更新一些小技巧。

以下网站可以找到一些参考资料:

安装 Minecraft 启动器 MultiMC

MultiMC 是一个免费, 开源的Minecraft启动器. 它最大的特点便是允许用户定义自己的整合包(在MMC中这个概念为 instances) 并且可以方便的管理他们。MultMC 支持 mac/linux/windows 桌面环境,在 MultMC 中,您可以很方便的管理多个 Minecraft 实例,可以方便的加载各种 mod 和资源,是 Fabric 官方推荐的 Minecraft 启动器。

在这里简单介绍 MultMC 的安装方法:

第一步,下载 MultMC 安装包

您可以选择去 官网或是其他途径,您也可以来本站资源站下载,国内速度很赞哟!

下载完成后安装即可。

第二步,安装java运行环境(已安装请跳过)

MultMc 运行须依赖 Java 运行环境,仅是运行安装 java-jre即可,您可以在 Java官网下载 Java jre,或是在本站资源站下载。

下载完成后安装即可。

第三步,添加账号

您需要拥有一个拥有 Minecraft 正版授权的 Minecraft 账号,以授权启动 Minecraft 实例。如果您没有账号,有三种方案可供选择,自行评鉴利弊。

  • 淘宝现成账号 8rmb +-
  • 淘宝授权账号 50rmb +-
  • Minecraft 购买 165 RMB (推荐支持正版)

image33188a1a71236726.png

拥有了帐号之后,在 MultMC 中右上角添加您的账号。

image3f661c938a0312af.png

第四步,新建实例。

有了正版授权,接下来就可以运行 Minecraft 啦。

在 MultMC 左上角添加实例,选择您需要的版本,新建即可,之后双击运行。

第五步,开始创造吧!

运行之后,可以选择单人游戏或是多人游戏。

单人游戏的数据存储在本地,而多人游戏需要 Minecraft 服务器支持,您可以自建 Minecraft 或是 Google 关键词 minecraft server list 寻找您感兴趣的 Minecraft 服务器。自建服务器就可以跟你的好友们一起创造自己的世界啦!

Minecraft 服务器地址

此处不断更新,记录自己感兴趣的服务器,如果您有有意思的服务器愿意分享给我也请与我联系,感激不尽!

  • Potter World:
    • homepage: https://potterworldmc.com/
    • server address: play.potterworldmc.com
    • enable the Server Resource Packs
    • Minecraft Java Edition – 1.10-1.13.

Minecraft mods

安装教程

想要加载 mod 您需要先安装 Fabric,步骤如下。

第一步,安装 Fabric API

在 MultMC 中右键实例,选择编辑实例。

imagefec1fb69ee101fe2.png

版本 中选择 安装 Fabric

如果按钮是灰色,也许是因为实例当前是开启状态,您需要关闭实例。

第二步, 将您的 mods 拷入实例 mods 文件夹,就可以使用啦。

image359aeacab23be4b6.png

Minecraft mods – VoxelMap 小地图

您可以在官网下载 Fabric 版的 jar 文件,放入 安装教程中提到的 mods 文件夹中即可使用,根据实测,您还需要加载一个 fabric-resource-loader-v0- 资源才可以使用 VoxelMap。

快速开始 1、下载这两个文件 fabric-resource-loader-v0-0.1.0+f1618918.jarfabricmod_VoxelMap-1.9.16_for_1.14.4.jar, 2、加载资源,启动实例即可。

image8a8ecc4d83c2cb2c.png

从提示信息中可以看到一些快捷键的信息:

  • Z:放大/缩小地图;
  • M:选项;
  • X:切换大地图;
  • N:快速添加一个路径点

OptiFine 光影 mods

OptiFine 在MultMC上直接安装无法使用,这里介绍安装方法。

第一步,下载这两个jar文件(注意对应Minecraft版本)

第二步,将两个jar文件在MultMC中加载入实例

imaged95bb78c202b1327.png

第三步,选择合适光影,具体参考OptiFine 光影部分

配置好插件后就能安装自己喜欢的光影啦,来个 Wisdom光影 效果图。

image180ce7827d1134e5.png

OptiFine 光影

安装方法

  • 前置条件:OptiFine已安装并正常运行

方法一:将光影资源包直接拷入 C:\SomeApps\MultiMC\instances\1.14.4\.minecraft\shaderpacks 文件夹(这里给的是参考,具体替换为自己实例的目录)。

方法二:在已运行的实例中添加。运行实例,进入 选项 -> 视频设置 -> 光影 ,单击光影文件夹,将下载好的光影压缩包拷入,选择启动即可。

imagef25471db50d0dc9c.png

您可以在这里下载光影,注意显卡支持:

Wisdom Shaders

image180ce7827d1134e5.png

参考文献

适当愉悦,自建 Minecraft 服务器

背景

  • 背景 1

    原来总是认为,玩游戏都是不务正业。直到自己在学习生活中遇到挫折又无处宣泄,长时间的坏心情下才感觉到有这么一个发泄情感、寻找愉悦的途径是很重要的。 必须要控制好度,当心情不好、遭遇不幸、遇到挫折,就需要适当的放松,松弛有度,是为了更好的出发。

  • 背景 2

    听说 Minecraft 这个游戏很久了,目前看来分为国际服和国内服(网易代理),体验一下网易代理的我的世界发现没有那么有意思,淘宝了一个正版的 Minecraft 试玩了一下,发现原版的 Minecraft 还是挺好玩的,可以按照一些需求打造自己的世界,还可以探索各种可能性,据说这是 Minecraft 的灵魂。

本地试玩之后发现不错,就想要自建一个 Minecraft 服务器,此后就可以自己在上面玩了,还可以跟朋友一起玩,于是根据目前查到的博文,在这里做一个简单的记录。

由于 Minecraft 游戏玩家众多,有许多忠实玩家,因此有一些观察力敏锐的人发现这一商机,专门提供 Minecraft 服务器,提供一些面板,可以避免令人望而却步的黑框白字,比如 时光云计算 就提供了容器部署方案,使用 qq bot 提供服务,在 购买界面 选择好配置,将指令发到 qq bot 就可以新建服务器,等待服务器启动完毕就可以使用提供的地址游戏了,用法非常简单,详细可以看 《在时光云轻松搭建”你的世界”服务器》 这篇文章。

本文主要介绍自建 Minecraft 服务器的方法,可以使用 阿里云、华为云、Azure、GCP 等提供的公有云服务,Minecraft 对虚拟机配置需求如下:

  • 1.系统要求:Debian9 / Ubuntu 18.04
  • 2.硬件要求:1cpu core+ / 2g ram + /10g disk+

下面简单介绍配置流程:

搭建 Minecraft

第一步,安装必要系统组件

# ubuntu / debian
sudo apt-get update && sudo apt-get install openjdk-8-jre-headless screen -y
# centos
sudo yum install java-1.8.0-openjdk

第二步,添加非root用户用于管理

sudo adduser mc

第三步,安装MC服务器

sudo su mc
cd
wget https://launcher.mojang.com/v1/objects/3dc3d84a581f14691199cf6831b71ed1296a9fdf/server.jar
mv server.jar spigot-1.14.4.jar
touch run.sh

也可从本站镜像站获取: wget https://res.frytea.com/Application/Server/spigot-1.14.4.jar

第四步,编写运行脚本 run.sh

nano run.sh

脚本内容:

#!/bin/sh

java -Xms512m -Xmx2048m -XX:+AggressiveOpts -XX:+UseCompressedOops -jar spigot-1.14.4.jar nogui

# xmx为可分配最大内存量,free -m 可查看

为脚本赋予运行权限

chmod +x run.sh

第五步,首次运行

sh run.sh

运行后退出程序,编辑配置文件。

首次运行时将会创建一个eula.txt文件

nano eula.txt

eula 改为 true

eula=true
nano server.properties
online-mode=false //关闭官方验证
white-list=true //安全起见,开启白名单,开启后需要编辑白名单,也可不开启。

第六步,运行MC服务器

注:重要!不要用root ssh登录加sudo su的方法启动服务器,会失败,请使用mc用户登录后启动!

screen ~/run.sh

[22:00:06] [Server thread/INFO]: Starting minecraft server version 1.14.4
[22:00:06] [Server thread/INFO]: Loading properties
[22:00:06] [Server thread/INFO]: Default game type: SURVIVAL
[22:00:06] [Server thread/INFO]: Generating keypair
[22:00:07] [Server thread/INFO]: Starting Minecraft server on *:25565

....

[22:00:07] [Server thread/INFO]: Preparing level "world"
[22:00:08] [Server thread/INFO]: Preparing start region for level 0
[22:00:09] [Server thread/INFO]: Preparing spawn area: 3%

....

[22:00:21] [Server thread/INFO]: Preparing spawn area: 96%
[22:00:22] [Server thread/INFO]: Done (14.737s)! For help, type "help" or "?"

第七步,后台运行

ctrl+a +d 退出screen
screen -r 进入screen

此后运行 Minecraft 首先切换到 mc, sudo su mc,之后运行脚本 screen ~/run.sh,就可以运行啦。

第八步,链接服务器

Minecraft 默认监听TCP 25565端口,记得开启端口权限。

访问 ip:25565 就可以访问 Mincraft 服务器啦!

QQ20200327113029b06b134c9466984a.png

参考文献

[编程题]和为S的连续正数序列

题目来源

时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M

题目描述

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

输出描述:

输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

解题思路

  • 所求序列是连续的递增序列,所以需要前后指针包含的是连续的数据。
  • Big指针在前,当和小于target时继续向前增加数字;small在后,当和大于target时向前减少数字。
  • 边界条件:因为结果数组必须包含两个数字以上,所以small<(s+1)/2,比如target为15,small不能到8,因为big至少为9超过了target。

参考代码

class Solution {
public:
    vector<vector<int> > FindContinuousSequence(int sum) {
        vector<vector<int>> res;
        if(sum < 3)
            return res;
        // 边界值
        int small = 1;
        int big = 2;
        // 初试累加
        int calculate = small + big;
        // 限定边界为 sum 的一半
        while(small < (sum + 1) /2 ){
            // 相等,保存结果,前进big
            if(calculate == sum){
                vector
<int> line;
                for(int i = small; i <= big; ++i)
                    line.push_back(i);
                res.push_back(line);
                calculate += ++big;
            }
            // 过小,加数,前进big
            else if(calculate < sum)
                calculate += ++big;
            // 过大,减数,前进small
            else
                calculate -= small++;
        }
        return res;
    }
};

参考文献