防火墙关闭或开启情形下在局域网内实现两台Windows主机配置NTP客户端与服务端实现时间校时并调整时间频率间隔

防火墙关闭或开启情形下在局域网内实现两台Windows主机配置NTP客户端与服务端实现时间校时并调整时间频率间隔

问题描述:

在一个与外界网络隔离的局域网内需要搭建一个NTP服务器给该局域网内的其他设备使用。最后查到了Windows默认带有NTP服务器,只是默认没有开启,我们可以通过修改注册表的方式打开Windows默认的NTP服务器。

Windows时间服务介绍
从Windows 2000起的所有Microsoft Windows版本都包括Windows时间服务(W32Time),其具有将计算机时钟同步到NTP服务器的能力。
W32Time服务最初是为实现Kerberos第五版的身份验证协议,它需要误差5分钟内正确时间值以防止重放攻击。Windows 2000和Windows XP中只实现了简单的NTP,并在几个方面违反了NTP第3版的标准。从Windows Server 2003和Windows Vista开始,已包括匹配完整NTP的实现。微软称W32Time服务不能可靠地将同步时间保持在1至2秒的范围内。如果需要更高的精度,微软建议使用其他NTP实现。

配置NTP服务端详细步骤如下:

1、在Windows服务器下,按住“windows+r”打开“运行”对话框,输入regedit,点击“确定”打开注册表。

image-20240227115438810

2、在注册表中依次展开:HKEY_LOCAL_MACHINE、SYSTEM、CurrentControlSet、Services、W32Time、TimeProviders、NtpServer,在NtpServer项的右侧键值ENablied,将默认的0改为1,1为启用NTP服务器。在注册表中依次展开:HKEY_LOCAL_MACHINE、SYSTEM、CurrentControlSet、Services、W32Time、TimeProviders、NtpServer,

image-20240227115357819

3、再在注册表中依次展开:HKEY_LOCAL_MACHINE、SYSTEM、CurrentControlSet、Services、W32Time、Config找到Config项右侧的AnnounceFlags。把默认的10改为5,5的意思就是自身为可靠的时间源

image-20240227115558077

5、在命令提示符中输入:net stop w32Time,回车等待NTP服务停止。然后再输入:net start w32Time,回车启动NTP服务。

注意:右键管理员打开cmd

image-20240227115719669

image-20240227115819730

使用电脑上NTP服务器的客户端来同步配置NTP的服务端,假设服务端ip地址为192.168.1.107.

6.测试,局域网内windows电脑同步成功

右键电脑左下方时间,点击调整日期/时间(A)

image-20240227120258070

image-20240227120446155

image-20240227120846963

注意:如果想使两个主机互为服务端,用客户端进行同步时,每次只能打开一方的Internet时间设置来进行更新,否则同步失败;

以上为局域网中防火墙关闭的情形,当考虑局域网中防火墙打开的情形时,要打开端口号,操作如下:

1.点击windows安全中心进入界面

image-20240227121226047

2.进入高级设置来配入站规则

image-20240227121315724

3.点击入站规则,并新建规则

image-20240227121403123

选择端口,因为NTP服务基于UDP协议并默认123端口,于是我们配置UDP端口号为123

image-20240227121532777

后面只需点击下一页,并设定名称即配置完成

一般默认时间同步的间隔时间为七天,若想间隔时间小一点,还需设置windows系统同步频率设置

**1、在NTP客户端里找到设置同步时间的时间间隔 ,**windows默认同步NTP服务的频次是7天

路径[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient,右侧找到【SpecialPollInterval】值,将对话框中的“基数”栏选择到“十进制”上,默认的604800就是由7(天)×24(时)×60(分)×60(秒)计算来的,(建议设为900=15分钟或3600=1小时等周期值)

设主机A为NTP Client 主机B为NTP Server

则需在主机B上配置NTP服务,步骤如下:

image-20240227122029159

设置为60秒

image-20240227122108978

再进入Internet时间点击更改设置并更新设置即生效。

注意事项:两个NTP Client和NTP Server最好在同一个网段下面;

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 为了在局域网内创建服务端客户端,您可以使用 Python 的 socket 模块。下面是一个简单的例子: 服务端代码: ``` import socket # Create a socket object s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Bind the socket to a specific address and port s.bind(('127.0.0.1', 6000)) # Listen for incoming connections s.listen(1) print('Server is listening...') # Accept an incoming connection conn, addr = s.accept() print('Connection from:', addr) # Send a message to the client conn.sendall(b'Welcome to the server!') # Close the connection conn.close() ``` 客户端代码: ``` import socket # Create a socket object s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Connect to the server s.connect(('127.0.0.1', 6000)) # Receive a message from the server print(s.recv(1024)) # Close the connection s.close() ``` 若需要添加UI界面,可以使用pyqt,tkinter等框架编写,具体可以参考文档。 后台面板使用js,就需要前后端分离,后台使用python提供api,然后前端用js调用. ### 回答2: 用Python编写局域网内的服务端客户端,并拥有UI界面,使用JS编写后台面板是可行的。 要实现这个功能,可以使用Python的socket模块来实现服务端客户端之间的通信。首先需要创建一个服务端程序,通过绑定本地IP地址和指定端口号来监听客户端的连接请求。当有客户端连接成功后,服务端可以与客户端进行数据交互。 服务端需要使用多线程或多进程来实现同时处理多个客户端的连接请求,以便同时为多个客户端提供服务。可以使用Python内置的threading或multiprocessing模块来实现多线程或多进程的支持。 在服务端的UI界面方面,可以使用Python的GUI库来实现,例如Tkinter、PyQt等。可以将服务端的界面设计成一个图形化的程序,包括一些按钮、输入框和输出框等,以便与客户端进行交互。 在后台面板方面,可以使用HTML、CSS和JS来设计一个Web页面,通过JavaScript与服务端进行通信。可以使用JavaScript的XMLHttpRequest或WebSocket等技术与服务端进行数据交互,通过AJAX实现实时更新和动态显示。 通过这样的实现,可以在局域网内建立起一个服务端与多个客户端之间的通信系统,并通过UI界面和后台面板来方便地进行交互和管理。 ### 回答3: 用Python编写一个在局域网内的服务端客户端是可行的,可以使用Python内置的socket库来实现网络通信功能。 首先,我们可以创建一个服务端程序,代码如下: ```python import socket # 创建socket对象 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置IP地址和端口号 host = '0.0.0.0' port = 12345 # 绑定IP地址和端口号 server_socket.bind((host, port)) # 监听请求 server_socket.listen(1) # 等待客户端连接 client_socket, client_address = server_socket.accept() # 接收客户端发送的数据 data = client_socket.recv(1024).decode() print('收到客户端消息:', data) # 发送响应给客户端 response = 'Hello, client!' client_socket.send(response.encode()) # 关闭连接 client_socket.close() server_socket.close() ``` 运行以上代码,服务端将监听在IP地址为'0.0.0.0',端口号为12345的地址上,并等待客户端的连接。一旦有客户端连接上来,服务端会接收客户端发送的数据,并发送响应给客户端。 接下来,我们可以创建一个客户端程序,代码如下: ```python import socket # 创建socket对象 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置IP地址和端口号 host = '服务端IP地址' port = 12345 # 连接服务端 client_socket.connect((host, port)) # 发送数据给服务端 data = 'Hello, server!' client_socket.send(data.encode()) # 接收服务端响应的数据 response = client_socket.recv(1024).decode() print('收到服务端消息:', response) # 关闭连接 client_socket.close() ``` 在客户端代码中,将"服务端IP地址"修改为实际的服务端IP地址。运行以上代码,客户端会连接到服务端,并发送数据给服务端,然后接收服务端响应的数据。 要实现具有UI界面的程序,可以使用Python的GUI库Tkinter来创建图形界面。而要使用JavaScript编写后台面板,可以使用Python的web框架如Django或Flask来搭建一个简单的web服务器,然后使用JavaScript与服务端进行通信。 最后,使用Tkinter创建的图形界面和使用JavaScript编写的后台面板可以在同一个Python程序中共存,同时运行。这样,你就可以拥有一个在局域网内的带有UI界面,并且可以通过后台面板进行控制的服务端客户端了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KJammyHenry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值