Technologieaustausch

Das Linux-System stellt die Open-Source-Dokumentendatenbank MongoDB bereit und realisiert den Fernzugriff ohne öffentliche Netzwerk-IP

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


💡 empfehlen

Vor ein paar Tagen habe ich eine riesige Website zum Lernen von künstlicher Intelligenz entdeckt. Sie ist leicht verständlich und humorvoll. Ich konnte nicht anders, als sie mit allen zu teilen. 【Klicken Sie hier, um zur Website zu springen

Vorwort

In diesem Artikel wird hauptsächlich die schnelle Bereitstellung von MongoDB im Linux-Ubuntu-System vorgestellt und das Intranet-Penetrationstool cpolar kombiniert, um über das öffentliche Netzwerk Fernzugriff auf die lokale Datenbank zu erreichen.

Der MongoDB-Server kann auf Linux-, Windows- und MacOS-Plattformen ausgeführt werden. Die unterstützte Abfragesprache ist sehr leistungsfähig. Er kann die meisten Funktionen ähnlich wie Einzeltabellenabfragen in relationalen Datenbanken realisieren Indexdaten.

Es ist komplizierter, MongoDB direkt mit dem Paketmanager zu installieren, aber es ist relativ einfach und schnell, MongoDB mit Docker zu installieren und bereitzustellen. Lassen Sie uns den spezifischen Vorgangsprozess mit Ihnen teilen.

0920c95b762166d005b42f74d46e654

1. Installieren Sie Docker

Die Betriebsumgebung dieses Tutorials ist das Linux-Ubuntu-System. Bevor wir beginnen, müssen wir Docker installieren.

Führen Sie im Terminal den folgenden Befehl aus:

Docker-Quelle hinzufügen

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu 
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | 
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Installieren Sie das Docker-Paket

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 1

Überprüfen Sie, ob die Installation der Docker-Engine erfolgreich war, indem Sie das Image ausführen

sudo docker run hello-world
  • 1

2. Verwenden Sie Docker, um das MongoDB-Image abzurufen

sudo docker pull mongo
  • 1

Bild-20240221134922055

Führen Sie dann den Befehl „Bild anzeigen“ aus:

sudo docker images
  • 1

Bild-20240221135030232

Sie können sehen, dass das MongoDB-Image erfolgreich abgerufen wurde.

3. Erstellen und starten Sie den MongoDB-Container

Nachdem wir das MongoDB-Image erfolgreich abgerufen haben, können wir das Image verwenden, um einen MongoDB-Container zu erstellen und auszuführen.

Erstellen Sie zunächst das Speicherverzeichnis /docker_mount/mongodb/data auf dem Host-Computer, um MongoDB-Daten beizubehalten.

Sie können es mit dem folgenden Befehl erstellen:

sudo mkdir -p /docker_mount/mongodb/data
  • 1

Führen Sie dann im Terminal den folgenden Befehl aus, um den Container auszuführen:

sudo docker run -d -p 27017:27017 --name mongodb -v /docker_mount/mongodb/data:/data/db -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=password mongo
  • 1

1708500820559

Parameterbeschreibung:

  • –name excalidraw: Der Containername in diesem Beispiel ist mongodb, Sie können ihn selbst benennen.
  • **-e MONGO_INITDB_ROOT_USERNAME=root: **Initialisieren Sie einen Benutzer root mit der Root-Rolle
  • **-e MONGO_INITDB_ROOT_PASSWORD=Passwort: **Das Passwort ist ein Passwort, Sie können es selbst festlegen.
  • -p 27017:27017: Portzuordnung, Zuordnung des lokalen 27017-Ports zum 27017-Port im Container.
  • **-d **: Stellen Sie den Container so ein, dass er immer im Hintergrund ausgeführt wird.

Führen Sie dann den folgenden Befehl aus, um zu prüfen, ob der Container ausgeführt wird:

sudo docker ps
  • 1

Bild-20240221153852667

Sie können sehen, dass der gerade erstellte MongoDB-Container ausgeführt wird.

4. Lokaler Verbindungstest

OK, nach dem obigen Vorgang ist die Docker-Bereitstellung von Mongodb abgeschlossen. Jetzt können wir Verbindungstests über Navicat durchführen.

Die von mir verwendete Navicat-Version ist 16. Erstellen Sie eine neue Mongodb-Verbindung wie unten gezeigt:

Host Geben Sie die Host-IP ein, Sie können sie im Terminal eingeben ip addrBefehl zum Anzeigen.

Geben Sie den Port ein: 27017

Verifizierung ausfüllen: admin

Geben Sie den Benutzernamen und das Passwort mit dem Konto und Passwort ein, das Sie gerade beim Starten des Containers festgelegt haben: root und Passwort

Bild-20240221154325747

Klicken Sie dann auf Verbindung testen und Sie können sehen, dass die Verbindung erfolgreich ist!

5. Greifen Sie über das öffentliche Netzwerk remote auf den lokalen MongoDB-Container zu

Allerdings können wir derzeit nur eine lokale Verbindung zu dem MongoDB-Dienst herstellen, den wir gerade mit Docker bereitgestellt haben. Was ist, wenn wir uns an einem anderen Ort befinden und remote auf den lokal bereitgestellten MongoDB-Container zugreifen möchten, aber keine öffentliche IP haben?

Wir können das Intranet-Penetrationstool cpolar verwenden, um Fernzugriffsanforderungen in einer Umgebung ohne öffentliche Netzwerk-IP zu erfüllen.

5.1 Installation von Intranet-Penetrationstools

Im Folgenden sind die Schritte zur Installation von cpolar aufgeführt:

Offizielle Website-Adresse von cpolar: https://www.cpolar.com

  • Verwenden Sie den Ein-Klick-Skriptinstallationsbefehl
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 1
  • Fügen Sie dem System Dienste hinzu
sudo systemctl enable cpolar
  • 1
  • Starten Sie den cpolar-Dienst
sudo systemctl start cpolar
  • 1

Nachdem cpolar erfolgreich installiert wurde, greifen Sie über einen externen Browser auf den Linux-Port 9200 zu: [http://Server-LAN-IP:9200]. Nach der Anmeldung können Sie die Webkonfigurationsoberfläche von cpolar sehen im Web Konfigurieren Sie einfach die Verwaltungsoberfläche.

Bild-20230831171159175

5.2 Erstellen Sie eine öffentliche Netzwerkadresse für die Remoteverbindung

Nachdem Sie sich bei der Web-UI-Verwaltungsoberfläche von cpolar angemeldet haben, klicken Sie im linken Dashboard auf Tunnelverwaltung – Tunnel erstellen:

  • Tunnelname: Er kann angepasst werden. Achten Sie darauf, den vorhandenen Tunnelnamen nicht zu duplizieren
  • Protokoll: TCP
  • Lokale Adresse: 27017
  • Typ des Domänennamens: zufälliger Domänenname
  • Region: Wählen Sie China VIP aus

Klicken创建

Bild-20240221160200575

Öffnen Sie dann die Online-Tunnelliste, zeigen Sie die öffentliche Adresse des TCP-Protokolls an und kopieren Sie sie.注意tcp://无需复制

Bild-20240221160228682

Öffnen Sie Navicat oder andere Verbindungstools, geben Sie die in unserem Cpolar oben erstellte öffentliche Netzwerkadresse in die Host-Option ein, und die Portnummer entspricht der Portnummer des öffentlichen Netzwerks, die nach dem Doppelpunkt in der Adresse generiert wird.

Bild-20240221160051207

Klicken Sie dann auf Verbindung testen und Sie können sehen, dass die Verbindung erfolgreich ist!

Zusammenfassung

Zur Vereinfachung der Demonstration haben wir im obigen Vorgang den von cpolar generierten TCP-Tunnel für öffentliche Netzwerkadressen verwendet und seine öffentliche Netzwerkadresse wurde zufällig generiert.

Der Vorteil dieser Zufallsadresse besteht darin, dass sie schnell ermittelt wird und sofort verwendet werden kann. Der Nachteil besteht jedoch darin, dass die URL zufällig generiert wird und sich diese Adresse innerhalb von 24 Stunden zufällig ändert, wodurch sie besser für die vorübergehende Verwendung geeignet ist.

Wenn Sie langfristig Fernzugriff auf den lokalen MongoDB-Dienst benötigen, die öffentliche Netzwerkadresse jedoch nicht jeden Tag neu konfigurieren möchten und außerdem möchten, dass die Adresse schön und leicht zu merken ist, empfehle ich Ihnen, sich für die Verwendung zu entscheiden eine feste TCP-Adresse für den Fernzugriff.

5.3 Fernzugriff über feste TCP-Adresse

AnmeldungBackend der offiziellen cpolar-WebsiteKlicken Sie links auf „Reservieren“, um die reservierte TCP-Adresse zu finden. Reservieren wir eine feste TCP-Adresse für die Remote-Verbindung zur MongoDB-Datenbank.

  • Region: Wählen Sie China vip
  • Beschreibung: Notizen, anpassbar

Klicken保留

Bild-20240221160835462

Nachdem die Adresse erfolgreich reserviert wurde, generiert das System die entsprechende feste öffentliche Adresse und kopiert sie.

In diesem Beispiel lautet die Adresse: 6.tcp.vip.cpolar.cn:13644

Rufen Sie es dann in Ihrem Browser aufLinux局域网ip地址+:9200端口, melden Sie sich bei der cpolar Web-UI-Verwaltungsoberfläche an.

Klicken Sie im linken Dashboard auf Tunnelverwaltung – Tunnelliste, suchen Sie den oben erstellten Remote-Datenbanktunnel und klicken Sie auf编辑

Bild-20240221161016132

Ändern Sie die Tunnelinformationen und konfigurieren Sie die erfolgreich reservierte feste TCP-Adresse im Tunnel.

  • Porttyp: geändert in festen TCP-Port
  • Reservierte TCP-Adresse: Geben Sie die von der offiziellen Website erfolgreich reservierte Adresse ein.

Klicken更新

Bild-20240221161130133

Nachdem der Tunnel erfolgreich aktualisiert wurde, klicken Sie auf den Status im linken Dashboard – Online-Tunnelliste. Sie können sehen, dass die öffentliche Netzwerkadresse auf eine feste TCP-Adresse aktualisiert wurde.

Bild-20240221161207657

Öffnen Sie das Verbindungstool, geben Sie die von der offiziellen Website reservierte feste TCP-Adresse ein, der Port ist die entsprechende Portnummer des öffentlichen Netzwerks nach der Adresse und klicken Sie auf Verbindung testen.

Bild-20240221161332281
Eine erfolgreiche Verbindung zeigt an, dass die öffentliche Netzwerkadresse nicht mehr zufällig geändert wird. Solange der Tunnel online bleibt, können wir über diese öffentliche Netzwerkadresse eine Remoteverbindung zur MongoDB-Datenbank herstellen.

Das Obige ist der gesamte Prozess, wie Sie mit Docker einen MongoDB-Container auf dem Ubuntu-System bereitstellen und ihn mit dem cpolar-Intranet-Penetrationstool kombinieren, um vom öffentlichen Netzwerk aus Fernzugriff auf lokale Dienste im Intranet zu erhalten.