Score:0

วิธีเพิ่มเส้นทาง IP ถาวรในเซิร์ฟเวอร์ Ubuntu 20.04

ธง cn

คำถามนี้อาจเคยได้รับคำตอบที่ไหนสักแห่งมาก่อน แต่ดูเหมือนว่าฉันจะยังคิดไม่ออก เมื่อเร็ว ๆ นี้ ฉันมีปัญหากับเซิร์ฟเวอร์ Ubuntu 20.04 ของฉัน ฉันติดตั้ง OpenVPN และฉันสามารถสร้างอุโมงค์ VPN ด้วย NordVPN ได้สำเร็จ ปัญหาคือเมื่อสร้างช่องสัญญาณแล้วการเชื่อมต่อจะหยุดทำงานและฉันไม่สามารถ ssh กลับเข้าไปในเซิร์ฟเวอร์ได้เว้นแต่ฉันจะเพิ่มเส้นทาง ip บางส่วน ฉันพบวิธีแก้ปัญหาสำหรับสิ่งนี้: สมมติว่า ip จริงของเซิร์ฟเวอร์คือ 185.230.125.107ฉันเพิ่มเส้นทางด้วยตนเองดังนี้:

กฎ sudo ip เพิ่มจาก 185.230.125.107 ตาราง 128
เส้นทาง sudo ip เพิ่มตาราง 128 185.230.125.107/32 dev eno0
เส้นทาง sudo ip เพิ่มตาราง 128 ค่าเริ่มต้นผ่าน 185.230.125.254

ใช้งานได้ดีจนกว่าจะรีบูต หลังจากรีสตาร์ทเครื่องฉันต้องเพิ่มกฎเหล่านั้นกลับเข้าไปใหม่ คำถามของฉันคือ: ฉันจะเพิ่มกฎเหล่านี้ได้อย่างไร ทำให้พวกเขาคงอยู่ ดังนั้นเมื่อรีบูตกฎเหล่านั้นก็จะคงอยู่เหมือนเดิม!? ควรเพิ่มที่ไหนและอย่างไร!? ฉันอ่านที่ไหนสักแห่งที่ฉันต้องสร้างสคริปต์ใน /etc/network/if-up.d แต่ฉันไม่รู้ว่าจะสร้างสคริปต์ดังกล่าวอย่างไร ได้โปรด มีคนเต็มใจช่วย!? ฉันซาบซึ้งมากจริงๆ ขอบคุณมาก นิค

raj avatar
cn flag
raj
I am pretty sure you can add this somewhere in Netplan configuration, however I don't know Netplan, because Ubuntu Desktop uses Network Manager and not Netplan. In Network Manager you can add persistent routes, so I'm sure it's possible in Netplan too. Hope someone would give an answer how to do it.
Nicola avatar
cn flag
Thank you anyways mate
Score:1
ธง us
  1. สวัสดีเพื่อน ฉันไม่สามารถแสดงความคิดเห็นดังนั้นฉันจะพยายามตอบที่นี่
  2. มีตัวเลือกน้อยในการสร้างกระบวนการกำหนดเวลาเพื่อแก้ปัญหานั้น
  3. นี่คือสองตัวเลือก:
    • crontab - ซึ่งไม่เหมาะกับปัญหาของคุณ
    • การให้บริการ - ซึ่งตรงกับปัญหาของคุณอย่างสมบูรณ์
    • อาจมีหลายวิธีที่ดีกว่าในการแก้ปัญหานั้น
  4. เกี่ยวกับ crontab:
    • crontab คือรายการคำสั่งที่คุณต้องการเรียกใช้ตามกำหนดเวลาปกติ
    • ในการเพิ่มคำสั่งที่คุณต้องการตั้งเวลารัน คุณต้องแก้ไขไฟล์ crontab ด้วยคำสั่ง crontab -e.
    • คุณสามารถใช้ไซต์นี้เพื่อช่วยคำนวณช่วงเวลาที่คุณต้องการดำเนินการคำสั่งเฉพาะ crontabเครื่องคิดเลข
    • คุณสามารถใช้คำแนะนำนี้เพื่อกำหนดไฟล์ crontab ของคุณเอง crontabGuide
  5. ตัวเลือกที่ดีกว่าสำหรับความคิดเห็นของฉันคือการสร้างบริการของคุณเอง
    • เมื่อคุณสร้างบริการ คุณสามารถเรียกใช้ได้เช่นเดียวกับบริการอื่น ๆ ทั้งหมด ซึ่งหมายความว่าคุณสามารถเปิดใช้งาน ปิดใช้งาน รีสตาร์ท เริ่มต้น และตัวเลือกอื่น ๆ ทั้งหมดที่มาพร้อมกับ systemctl สั่งการ.
    • คุณต้องสร้างบริการของคุณเป็นไฟล์ข้อความและตั้งชื่อเป็น myServiceName.service
    • จากนั้นคุณต้องค้นหาบริการนั้นใน /etc/systemd/ระบบ/.
    • ใช้คู่มือนี้เพื่อสร้างเทมเพลตบริการ howToMakeAServiceGuide.
    • หลังจากสร้างบริการและค้นหาเขาในไดเร็กทอรีเฉพาะแล้ว คุณสามารถเปิดใช้งานและเริ่มต้นเขาด้วยคำสั่งนี้: systemctl เปิดใช้งาน serviceName.service และ systemctl เริ่ม serviceName.service.
    • บริการควรเริ่มต้นเมื่อรีบูตใด ๆ ดังนั้นอาจช่วยแก้ปัญหาของคุณได้
  6. แก้ไขหลังจากความคิดเห็น.
    • สร้างสคริปต์ด้วย sudo nano /usr/local/sbin/SCRIPT_NAME.sh
    • ตัวอย่างสคริปต์ที่มีคำสั่งของคุณ:
    • #/ถัง/ทุบ!
    • กฎ ip เพิ่มจาก 185.230.125.107 ตาราง 128
    • เส้นทาง ip เพิ่มตาราง 128 185.230.125.107/32 dev eno0
    • เส้นทาง ip เพิ่มตาราง 128 ค่าเริ่มต้นผ่าน 185.230.125.254
    • ตอนนี้ให้สคริปต์ดำเนินการสิทธิ์ด้วย chmod a+x SCRIPT_NAME.sh
    • ตอนนี้สร้างบริการด้วย sudo nano /systemd/system/SERVICE_NAME.service
    • ใช้เทมเพลตนั้น: ในฟิลด์ ExecStart เรียกใช้สคริปต์ของคุณ
Description=บริการสาธิต ROT13
หลังจาก = network.target
StartLimitIntervalSec=0
[บริการ]
ประเภท = ง่าย
เริ่มใหม่ = เสมอ
รีสตาร์ทวินาที = 1
ผู้ใช้ = centos
ExecStart=/usr/local/sbin/./SCRIPT_NAME.sh

[ติดตั้ง]
WantedBy=multi-user.target
  1. แก้ไขหลังจากความคิดเห็นที่สอง:
  2. เพื่อให้แน่ใจว่าบริการของคุณได้รับการกำหนดค่าอย่างถูกต้อง ให้ทำตามขั้นตอนนี้:
    • ค้นหาบริการใน /etc/systemd/system/LOCATE_HERE.service
    • ให้สคริปต์ของคุณที่ทำงานโดยบริการที่ได้รับอนุญาตในการดำเนินการ sudo chmod a+x yourscript.sh
    • ดำเนินการคำสั่ง sudo systemctl daemon โหลดซ้ำ เพื่อโหลดบริการใหม่
    • ดำเนินการคำสั่ง sudo systemctl เปิดใช้งาน serviceName.service
    • ดำเนินการคำสั่ง sudo systemctl เริ่ม serviceName.service
    • ดำเนินการคำสั่ง sudo systemctl สถานะ serviceName.service
    • หากบริการกำลังทำงานอยู่ให้รีบูตระบบของคุณ
    • หลังจากรีบูตให้รันคำสั่ง sudo systemctl สถานะ serviceName.service เพื่อตรวจสอบว่าบริการกำลังทำงานอยู่หรือไม่
    • ภาพ:
    • บริการตัวอย่างที่ใช้งานได้สำหรับฉัน
    • วิธีเริ่มคำสั่งบริการ
    • หากวิธีแก้ปัญหาทั้งหมดไม่ทำงาน อาจมีปัญหากับประเภทไฟล์ - ตรวจสอบวิธีแก้ปัญหาที่นี่ โซลูชัน ForFileTypeError
Nicola avatar
cn flag
ขอบคุณมาก ๆ นะเพื่อน. คุณทำให้ชีวิตฉันง่ายขึ้นมาก นี่คือโซลูชั่นที่สมบูรณ์แบบ
CrazyTux avatar
us flag
ยินดีต้อนรับอีกครั้ง ฉันเดาว่ายังมีวิธีแก้ปัญหาอีกมากมายที่อาจดีกว่า แต่นั่นน่าจะได้ผล หากวิธีนี้ใช้ได้ผล คุณสามารถยอมรับคำตอบได้โดยคลิกที่ V ใกล้ฟิลด์คำตอบของฉัน
CrazyTux avatar
us flag
ฉันเพิ่งพบหัวข้อนี้ที่เป็นประโยชน์และอาจจะดีกว่าคำตอบของฉัน https://askubuntu.com/questions/168033/how-to-set-static-routes-in-ubuntu-server?rq=1
Nicola avatar
cn flag
ฉันมาที่นี่อีกครั้ง สคริปต์ที่ฉันทำเหมือนที่คุณแนะนำทำงานได้อย่างสมบูรณ์ ปัญหาเดียวคือเมื่อบู๊ต บริการจะไม่เริ่มทำงาน จาก Journalctl ฉันพบว่า systemd ไม่สามารถเริ่มบริการได้เนื่องจาก âการกำหนดนอกส่วน เพิกเฉย" ฉันไม่รู้ว่าเกิดอะไรขึ้น สคริปต์ที่ฉันสร้างฉันเปลี่ยนความเป็นเจ้าของเป็นรูท ถ้าฉันรันด้วยตนเอง มันจะใช้งานได้ แต่ systemd จะไม่เริ่มเป็นบริการ
CrazyTux avatar
us flag
มีวิธีแก้ไขที่พอใช้ได้สองวิธี: วิธีที่แนะนำคือแก้ไขบริการ (คุณสามารถส่งบริการที่คุณทำขึ้นเพื่อให้ฉันตรวจสอบได้ โปรดลบข้อมูลส่วนตัวของคุณ) อีกวิธีเบื้องต้นแต่ได้ผลคือใช้ crontab เพื่อเรียกใช้สคริปต์
Nicola avatar
cn flag
สวัสดีและขอบคุณสำหรับการกลับมาหาฉัน นี่คือลักษณะของไฟล์บริการ: --------------------------------------------- คำอธิบาย=iprules_service หลังจาก = network.target StartLimitIntervalSec=0 [บริการ] ประเภท = ง่าย เริ่มใหม่ = เสมอ รีสตาร์ทวินาที = 1 ผู้ใช้=นิค ExecStart=/usr/local/sbin/iprules.sh [ติดตั้ง] WantedBy=multi-user.target ------------------------------------ ไฟล์ *.sh ทำงานได้ดีเพราะฉันสามารถเริ่มต้นด้วยตนเองด้วย sudo โดยไม่มีปัญหา ฉันชอบวิธีนี้เพราะสวยงามกว่า crontab หวังว่าฉันจะคิดออกอย่างใด ไทมาก
CrazyTux avatar
us flag
ตอนนี้ฉันจะแก้ไขคำตอบของฉันและหวังว่าจะได้ผลสำหรับคุณ ฉันเพิ่งใช้บริการบน vps ของฉันและมันทำงานได้อย่างสมบูรณ์
Nicola avatar
cn flag
มันได้ผล!! ขอบคุณมากสำหรับความอดทนของคุณ ฉันเป็นหนี้คุณอย่างหนึ่ง
Score:0
ธง cn

คุณสามารถทำได้แน่นอนใน Netplan ฉันเพิ่งทำและยืนยันการคงอยู่หลังจากรีบูต เว็บไซต์อย่างเป็นทางการของ Netplan หน้าตัวอย่าง แสดงตัวอย่างมากมายในเรื่องนี้

ตัวอย่าง:

  1. แก้ไขไฟล์ปรับแต่ง netplan ของคุณ (อยู่ใน /etc/netplan/)

  2. ค้นหาอินเทอร์เฟซที่คุณต้องการเส้นทาง (เช่น eth0)

  3. ค้นหาส่วนที่อยู่

  4. เพิ่มคำสำคัญเส้นทางและรายละเอียดเส้นทางในส่วนที่อยู่

    เส้นทาง:
       - ถึง: ค่าเริ่มต้น
         ผ่าน: 1.1.1.254
    
  5. บันทึกและปิด

  6. ประเภท: sudo netplan สร้าง (และกด Enter)

  7. ประเภท: ใช้ sudo netplan (แล้วกด Enter)

  8. ทดสอบเส้นทางของคุณโดยส่ง Ping ไปยัง IP ที่รู้จักบนเครือข่ายเป้าหมาย

Zanna avatar
kr flag
คงจะดีไม่น้อยหากคุณสามารถเพิ่มคำแนะนำที่เฉพาะเจาะจงลงไปได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา