คำถาม
มีสคริปต์ทั่วไปที่แชร์ Wi-Fi ผ่านอีเทอร์เน็ตจากเซิร์ฟเวอร์ Ubuntu ไปยังอีกเซิร์ฟเวอร์หนึ่ง (ที่ไม่มีการ์ด Wi-Fi) หรือไม่ ฉันเห็น คำถามนี้ (และ นี้, และ นี้) แก้ไขสำหรับเวอร์ชันด้วย GUI โดยใช้การคลิกเมาส์ และฉันคิดว่าฉันสามารถป้องกันไม่ให้สร้างวงล้อใหม่ได้หากมีสคริปต์ที่เทียบเท่าอยู่แล้ว
ฝั่งเซิร์ฟเวอร์ (ทำงาน CLI)
พบสคริปต์นี้ในเวอร์ชันที่ถูกตัดทอน บน GitHubรวมกับคำแนะนำบน เว็บไซต์นี้ ทำงานในฝั่งเซิร์ฟเวอร์
sudo นาโน /etc/sysctl.conf
ไม่แสดงความคิดเห็น (สามารถทำได้ด้วย sudo ที
คำสั่งในสคริปต์):
net.ipv4.ip_forward=1
ประหยัดด้วย ctrl+s
, ctrl+x
. โหลดซ้ำโดยใช้:
sudo sysctl -p /etc/sysctl.conf
สร้างสคริปต์ต่อไปนี้ชื่อ share_wifi.sh
:
lan_device="eth0"
online_device="wlan0"
iptables -t nat -A โพสต์ -o $online_device -j MASQUERADE
iptables -A FORWARD -i $online_device -o $lan_device -m state --state RELATED,ESTABLISHED -j ยอมรับ
iptables -A FORWARD -i $lan_device -o $online_device -j ยอมรับ
ทำให้รันได้และรันด้วย:
chmod +x share_wifi.sh
sudo ./share_wifi.sh
ต่อไป ฉันเก็บที่อยู่ IP ในเครื่องของ "เซิร์ฟเวอร์" โดยเรียกใช้:
ชื่อโฮสต์ -I
ซึ่งส่งคืนสิ่งที่ต้องการ 123.145.16.18 415.141.14.15
ฉันเก็บที่อยู่ IP แรกที่ส่งคืน
ฝั่งไคลเอนต์ (GUI เท่านั้น)
แต่ฉันตั้งค่าไคลเอนต์พีซีด้วยตนเองโดยใช้ GUI แทน CLI ก่อนอื่นฉันลองใช้คำสั่ง CLI แต่ข้อผิดพลาดเหล่านี้ส่งคืน:
เส้นทาง sudo ip เป็นค่าเริ่มต้น
เส้นทาง sudo ip เพิ่มค่าเริ่มต้นผ่าน <ip ของเกตเวย์พีซี>
sudo นาโน /etc/resolv.conf
และเพิ่ม: เนมเซิร์ฟเวอร์ 8.8.8.8
,บันทึกไว้ด้วย ctrl+s
, ctrl+x
.
สิ่งนี้ไม่ได้ให้อินเทอร์เน็ตแก่อุปกรณ์ ดังนั้นฉันจึงลองใช้วิธีแก้ปัญหาด้วยตนเอง/GUI ซึ่งได้ผล:
ฉันคลิกที่สัญลักษณ์ Wi-Fi/LAN ด้านขวาบน การตั้งค่าแบบมีสาย
, คลิกที่แท็บ: IPv4
, คลิกที่ วิธี IPv4
และในส่วนนั้นคลิกที่ คู่มือ
. ถัดไปในส่วน ที่อยู่
ฉันกรอก:
ที่อยู่:123.145.16.55
เน็ตมาสก์:255.255.255.0
เกตเวย์:123.145.16.18
- หมายเหตุใน
ที่อยู่
ฉันป้อนที่อยู่ IP แบบสุ่มในที่เดียวกัน
รูปแบบ/ช่วงเป็นที่อยู่ IP ภายในเครื่องของเซิร์ฟเวอร์ ตัวอย่างเช่น
เซิร์ฟเวอร์มี: 123.145.16.18
และฉันก็เลือก 123.145.16.55
, ฉันคิดว่าฉัน
โชคดีที่ IP นั้นยังไม่ได้ถูกนำไปใช้โดยอุปกรณ์อื่น
- หมายเหตุใน
เน็ตมาสก์
ฉันป้อนค่าเริ่มต้น/ค่ามาตรฐาน
- หมายเหตุใน
ประตู
ฉันป้อนที่อยู่ IP ท้องถิ่นของเซิร์ฟเวอร์ที่ฉันจดบันทึกไว้ก่อนหน้านี้ด้วย ชื่อโฮสต์ -I
สั่งการ.
ต่อไป ฉันคลิกสมัคร และเพียงแค่นั้น คอมพิวเตอร์ไคลเอนต์ก็เชื่อมต่อกับอินเทอร์เน็ตโดยอัตโนมัติ
ดังนั้นฉันจึงตั้งเป้าหมายที่จะทำให้ขั้นตอนสุดท้ายเป็นแบบอัตโนมัติ โดยการตรวจหาไคลเอนต์พีซีผ่าน ssh โดยอัตโนมัติ เข้าสู่ระบบและเรียกใช้สคริปต์จากโฮสต์พีซี ซึ่งโดยทั่วไปจะตั้งค่าการเชื่อมต่อด้วยตนเองไปยังโฮสต์ มิฉะนั้นให้ใช้สองสคริปต์แยกกัน สคริปต์หนึ่งสำหรับโฮสต์ และอีกสคริปต์หนึ่งสำหรับลูกค้า