事情是这样的。我有一台具有静态 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())