Puncte:0

Cum să adăugați rute IP persistente în serverul Ubuntu 20.04

drapel cn

Poate că la această întrebare s-a răspuns undeva înainte, dar nu pot să-mi dau seama încă. În ultimul timp, am câteva probleme cu serverul meu Ubuntu 20.04. Am instalat OpenVPN și pot crea cu succes un tunel vpn cu NordVPN. Problema este că atunci când tunelul este creat, conexiunea se întrerupe și nu pot trimite ssh înapoi în server decât dacă adaug niște rute IP. Am gasit o solutie pentru asta: Presupunând că ip-ul real al serverului este 185.230.125.107, am adăugat manual rutele după cum urmează:

sudo ip rule add from 185.230.125.107 tabelul 128
sudo ip route add table 128 185.230.125.107/32 dev eno0
sudo ip route adăugați tabelul 128 implicit prin 185.230.125.254

Acest lucru funcționează bine până la repornire. După ce mașina repornește, trebuie să adaug acele reguli din nou. Intrebarea mea este aceasta: Cum aș adăuga aceste reguli, făcându-le persistente, astfel încât la repornire să rămână pe loc!? Unde și cum ar trebui să le adaug!? Am citit undeva că trebuie să creez un fel de script în /etc/network/if-up.d, dar nu am idee cum să fac un astfel de script. Vă rog, este cineva dispus să ajute!? Chiar aș aprecia băieții ăia. Mulţumesc mult Nick

raj avatar
drapel cn
raj
Sunt destul de sigur că puteți adăuga asta undeva în configurația Netplan, totuși nu cunosc Netplan, deoarece Ubuntu Desktop folosește Network Manager și nu Netplan. În Network Manager puteți adăuga rute persistente, așa că sunt sigur că este posibil și în Netplan. Sper că cineva va da un răspuns cum se face.
Nicola avatar
drapel cn
Multumesc oricum prietene
Puncte:1
drapel us
  1. Bună, prietene, nu pot comenta așa că voi încerca să răspund aici.
  2. Există puține opțiuni pentru a crea un proces programat pentru a rezolva această problemă.
  3. Iată două opțiuni:
    • crontab - care se potrivește mai puțin cu problema ta.
    • realizarea unui serviciu - care se potrivește perfect cu problema dvs.
    • ar putea exista mai multe și mai bune modalități de a rezolva această problemă.
  4. Despre crontab:
    • Crontab este o listă de comenzi pe care doriți să le executați într-un program regulat.
    • Pentru a adăuga o comandă pe care doriți să o programați, trebuie să editați fișierul crontab cu comanda crontab -e.
    • puteți folosi acest site pentru a vă ajuta să calculați intervalul în care doriți să executați o anumită comandă crontabCalculator
    • puteți folosi acest ghid pentru a vă imagina propriul fișier crontab crontabGuide
  5. Opțiunea mai bună, după părerea mea, este să vă creați propriul serviciu.
    • când creați un serviciu, îl puteți rula la fel ca toate celelalte servicii, asta înseamnă că puteți activa, dezactiva, reporni, porni și toate celelalte opțiuni care vin cu systemctl comanda.
    • trebuie să vă creați serviciul ca fișier text și să îl denumiți myServiceName.service.
    • atunci trebuie să localizați acel serviciu în /etc/systemd/system/.
    • utilizați acest ghid pentru a avea un șablon de serviciu cumToMakeAServiceGuide.
    • după ce ai creat serviciul și l-ai localizat în directorul specific, îl poți activa și porni prin următoarele comenzi: systemctl enable serviceName.service și systemctl start serviceName.service.
    • serviciul ar trebui să înceapă la orice repornire, astfel încât să vă rezolve problema.
  6. Editat după comentarii.
    • creați un script cu sudo nano /usr/local/sbin/SCRIPT_NAME.sh
    • exemplu pentru un script cu comenzile dvs.:
    • #/bin/bash!
    • regulă ip adăugați din 185.230.125.107 tabelul 128
    • IP route add table 128 185.230.125.107/32 dev eno0
    • ip route add table 128 default prin 185.230.125.254
    • acum dați scriptului permisiuni de execuție cu chmod a+x SCRIPT_NAME.sh
    • acum creați un serviciu cu sudo nano /systemd/system/SERVICE_NAME.service
    • folosește acel șablon: în câmpul ExecStart, executați scriptul
Descriere=serviciu demonstrativ ROT13
După=rețea.țintă
StartLimitIntervalSec=0
[Serviciu]
Tip=simplu
Restart=intotdeauna
RestartSec=1
Utilizator=centos
ExecStart=/usr/local/sbin/./SCRIPT_NAME.sh

[Instalare]
WantedBy=multi-user.target
  1. Editat după comentariile două:
  2. Pentru a vă asigura că serviciul dvs. este configurat corect, urmați acești pași:
    • localizați serviciul în /etc/systemd/system/LOCATE_HERE.service
    • dați scriptului dvs. cu care rulează serviciul permisiunea de execuție sudo chmod a+x yourscript.sh
    • executa comanda sudo systemctl daemon-reload pentru a reîncărca noul serviciu.
    • executa comanda sudo systemctl enable serviceName.service
    • executa comanda sudo systemctl start serviceName.service
    • executa comanda sudo systemctl status serviceName.service
    • dacă serviciul rulează, reporniți sistemul.
    • după repornire executați comanda sudo systemctl status serviceName.service pentru a verifica dacă serviciul rulează.
    • imagini:
    • serviceExampleThatWorksForMe
    • cumToStartTheServiceCommands
    • dacă toată această soluție nu funcționează, ar putea fi o problemă cu tipul de fișier - verificați soluția aici solutionForFileTypeError
Nicola avatar
drapel cn
Vă mulțumesc foarte mult prietenul meu. Mi-ai făcut viața mult mai ușoară. Aceasta este soluția perfectă.
CrazyTux avatar
drapel us
Bine ați venit, din nou cred că există mai multe soluții care ar putea fi mai bune, dar asta ar trebui să funcționeze, dacă funcționează, puteți accepta răspunsul făcând clic pe V lângă câmpul meu de răspuns.
CrazyTux avatar
drapel us
Tocmai am găsit acest subiect care poate fi util și poate mai bun decât răspunsul meu https://askubuntu.com/questions/168033/how-to-set-static-routes-in-ubuntu-server?rq=1
Nicola avatar
drapel cn
Deci iată-mă din nou. Scenariul pe care l-am făcut așa cum ați sugerat dumneavoastră funcționează perfect. Singura problemă este că la pornire, serviciul nu pornește. Prin Journalctl am aflat că systemd nu a reușit să pornească serviciul deoarece âAtribuire în afara secțiunii. Ignorând". Nu știu ce a mers prost. Scriptul pe care l-am creat am schimbat proprietatea în root. Dacă îl rulez manual, funcționează, dar systemd nu îl va porni ca serviciu.
CrazyTux avatar
drapel us
Există două soluții acceptabile: cea recomandată este repararea serviciului. (Puteți trimite serviciul pe care l-ați făcut, astfel încât să pot arunca o privire la el, vă rugăm să ștergeți detaliile dvs. personale), celălalt premitiv, dar funcționează, este să utilizați crontab pentru a rula scriptul.
Nicola avatar
drapel cn
Bună și mulțumesc că ați revenit la mine. Iată cum arată fișierul de serviciu: --------------------------------------------- Descriere=serviciu_iprules După=rețea.țintă StartLimitIntervalSec=0 [Serviciu] Tip=simplu Restart=intotdeauna RestartSec=1 Utilizator=nick ExecStart=/usr/local/sbin/iprules.sh [Instalare] WantedBy=multi-user.target ------------------------------------- Fișierul *.sh funcționează foarte bine, deoarece îl pot porni manual cu sudo fără probleme Prefer această soluție pentru că este mai elegantă decât crontab. Hop, o să-mi dau seama cumva. Ty foarte mult
CrazyTux avatar
drapel us
Acum îmi voi edita răspunsul și sper că va funcționa pentru tine, pur și simplu rulez serviciul pe vps-ul meu și funcționează perfect.
Nicola avatar
drapel cn
A MERS!! Vă mulțumesc foarte mult pentru răbdare. Îți rămân dator.
Puncte:0
drapel cn

Cu siguranță puteți face acest lucru în Netplan. Tocmai am făcut-o și am confirmat persistența după o repornire. Site-ul oficial al Netplan Pagina de exemple arată multe exemple în acest sens.

Exemplu:

  1. Editați fișierul de configurare netplan (situat în /etc/netplan/)

  2. Localizați interfața unde doriți ruta (ex. eth0)

  3. Localizați secțiunea de adrese

  4. Adăugați cuvântul cheie rute și detalii despre rută în secțiunea adrese

    rute:
       - la: implicit
         prin: 1.1.1.254
    
  5. Salveaza si inchide

  6. Tastați: sudo netplan generate (și apăsați Enter)

  7. Tastați: sudo netplan apply (și apăsați Enter)

  8. Testați-vă ruta făcând ping la un IP cunoscut în rețeaua țintă

Zanna avatar
drapel kr
Ar fi bine dacă ați putea adăuga câteva instrucțiuni mai specifice.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.