如何制作我自己的动态 DNS 服务器?

如何制作我自己的动态 DNS 服务器?

事情是这样的。我有一台具有静态 IP 和域名 (example.com) 的服务器,还有一些其他服务器,它们的位置不断变化,具有动态 IP,但没有域名。我想给他们我的子域名 (如 1.example.com);当我的客户想要访问 1.example.com 时,我希望我的主服务器将他们转发到另一台服务器。所以我需要在我的其他服务器上运行一个程序,监听他们的 IP 并将它们发送到主服务器,之后我需要一个在我的主服务器上运行的程序,监听其他服务器的 IP 并更新绑定子域记录。我找遍了整个互联网,没有找到适合我的情况的东西。

PS:我遇到的情况是,我的网络受限,无法使用“no-ip”或“duckdns”或类似的东西。我在所有服务器上都安装了 apache2,它们都使用“Ubuntu 服务器”。

解决方案是什么?我该怎么做???!

答案1

好吧,经过多次尝试和研究,我决定为动态 DNS 服务器编写自己的 Python 程序。因此,在第一部分中,我将在此处发布我使用的 Python 代码示例,考虑到代码并不完整,我将在稍后发布对这篇文章的编辑。

服务器端:

#----- A simple TCP based server program in Python using send()$



import socket
import logging

# Create a stream based socket(i.e, a TCP socket)

# operating on IPv4 addressing scheme

serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)



# Bind and listen

serverSocket.bind(("**Localhost**",**port**))

serverSocket.listen(5)

print ('Hello client!')

# Accept connections

while(True):

    (clientConnected, clientAddress) = serverSocket.accept()

    print("Accepted a connection request from %s:%s"%(clientAddress[0], clientAddress[1]))



    dataFromClient = clientConnected.recv(1024)
    print(dataFromClient.decode())



    # Send some data back to the client

    clientConnected.send("Hello User".encode())
    user = dataFromClient
    cip = clientAddress
    LOG_FILENAME = '/log.txt'
    logging.basicConfig(filename=LOG_FILENAME,level=logging.DEB$
    file = open("log.txt","r+")
    file.truncate(0)
    file.close()
    logging.debug(cip)
    logging.debug(user)
    logging.debug("--------------------------------------------$

客户端:

import socket



# Create a client socket

clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)



# Connect to the server

clientSocket.connect(("**Server's public**",**port**))



# Send data to server

data = 'Hello server'

clientSocket.send(data.encode())



# Receive data from server

dataFromServer = clientSocket.recv(1024)



# Print to the console

print(dataFromServer.decode())

相关内容