Score:0

ลูกค้าไม่สามารถเข้าถึงอินเทอร์เน็ตในขณะที่เราเตอร์ Ubuntu 20.04 ทำ

ธง vn

ฉันเพิ่งพยายามกำหนดค่า Ubuntu 20.04 เป็นเราเตอร์ ปัญหาแปลกๆ เกิดขึ้นเมื่อฉันคิดว่าฉันทำขั้นตอนทั้งหมดเสร็จแล้ว ไคลเอนต์ที่เชื่อมต่อกับเราเตอร์ Ubuntu นั้นไม่สามารถเข้าถึงอินเทอร์เน็ตได้ในขณะที่เราเตอร์ Ubuntu เองทำ

ก่อนที่จะวางการกำหนดค่าที่นี่ ฉันจะใส่รูปภาพว่าเราเตอร์เชื่อมโยงกับอุปกรณ์อื่นๆ อย่างไร:

เราเตอร์ระดับแรก >----<[WAN] Ubuntu Router(Dynamic IP) [LAN]>----< Client (DHCP)

ทำตามคำแนะนำ ฉันทำการกำหนดค่าเหล่านี้บนเราเตอร์ Ubuntu /etc/netplan/00-installer-config.yaml:

เครือข่าย:
  อีเธอร์เน็ต:
    wan1:
      จับคู่:
        ที่อยู่: xx:xx:xx:xx:xx:01
      ชื่อชุด:wan1
    dhcp4: ใช่
  eth1:
    จับคู่:
      ที่อยู่: xx:xx:xx:xx:xx:02
    ชื่อชุด: eth1
    dhcp4: ไม่
สะพาน:
  br:
    อินเทอร์เฟซ:
      - eth1
    ที่อยู่:
      - 192.168.3.1/24

เอาต์พุต ifconfig อยู่ที่นี่:

br: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
    inet 192.168.3.1 netmask 255.255.255.0 ออกอากาศ 192.168.3.255
    inet6 fe80::f0de:2aff:fe06:98ad คำนำหน้า 64 scopeid 0x20<link>
    อีเธอร์ a4:1a:3a:b6:08:b5 txqueuelen 1000 (อีเธอร์เน็ต)
    แพ็คเก็ต RX 7283 ไบต์ 456695 (456.6 KB)
    ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
    แพ็กเก็ต TX 295 ไบต์ 36494 (36.4 KB)
    ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0

eth1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
    อีเธอร์ a4:1a:3a:b6:08:b5 txqueuelen 1000 (อีเธอร์เน็ต)
    แพ็คเก็ต RX 7283 ไบต์ 558657 (558.6 KB)
    ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
    แพ็กเก็ต TX 287 ไบต์ 35750 (35.7 KB)
    ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0

แท้จริง: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
    inet 127.0.0.1 เน็ตมาสก์ 255.0.0.0
    inet6 ::1 คำนำหน้าlen 128 scopeid 0x10<host>
    วนซ้ำ txqueuelen 1,000 (วนกลับในเครื่อง)
    แพ็คเก็ต RX 7941154 ไบต์ 604164948 (604.1 MB)
    ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
    แพ็กเก็ต TX 7941154 ไบต์ 604164948 (604.1 MB)
    ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0

wan1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.1.4 netmask 255.255.255.0 ออกอากาศ 192.168.1.255
    inet6 fe80::da50:e6ff:fe3f:fdcb คำนำหน้า 64 scopeid 0x20<ลิงค์>
    inet6 2409:8a50:1873:70b3:da50:e6ff:fe3f:fdcb คำนำหน้าlen 64 scopeid 0x0 <ทั่วโลก>
    อีเธอร์ d8:50:e6:3f:fd:cb txqueuelen 1000 (อีเธอร์เน็ต)
    แพ็คเก็ต RX 39031 ไบต์ 3017742 (3.0 MB)
    ข้อผิดพลาด RX 0 ลดลง 2229 โอเวอร์รัน 0 เฟรม 0
    แพ็กเก็ต TX 35636 ไบต์ 36600911 (36.6 MB)
    ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0

นอกจากนี้ ฉันได้เปิดใช้งานการส่งต่อ ipv4 โดยเพิ่มบรรทัดนี้ใน /etc/sysctl.conf:

net.ipv4.ip ไปข้างหน้า = 1

Iptables ถูกตั้งค่าเป็นบรรทัดต่อไปนี้ด้านล่าง และดูแลโดยทำให้ systemd รัน iptables-restore on-boot:

sudo iptables -t nat -A โพสต์ -o wan1 -j MASQUERADE

ฉันติดตั้ง dnsmasq และแก้ไข /etc/dnsmasq.conf เป็นรายการด้านล่าง: (ระบบได้รับการแก้ไขหยุดและปิดใช้งาน)

ฟังที่อยู่ = 127.0.0.1,192.168.3.1
พอร์ต = 53
อินเทอร์เฟซ = eth1
dhcp-ช่วง=192.168.3.100,192.168.3.199,255.255.255.0,24ชม.
dhcp-option=ตัวเลือก:เราเตอร์,192.168.3.1
dhcp-option = ตัวเลือก: เซิร์ฟเวอร์ DNS, 192.168.3.1

หลังจากที่ฉันกำหนดค่าแล้ว ดูเหมือนว่ามันใช้งานได้ ฉันสามารถยืนยันได้ว่า DHCP ใช้งานได้เนื่องจากฉันเห็นบันทึกของ dnsmasq และเราเตอร์ Ubuntu เองก็มีการเข้าถึงอินเทอร์เน็ต

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

David avatar
cn flag
กรุณาอย่าโพสต์ภาพข้อความ ตัดและผ่านที่ส่งออกไปยังเนื้อหาของคำถาม
Score:0
ธง br

ลองเพิ่มกฎนี้:

iptables -A FORWARD --in-interface br -j ยอมรับ

และแทนที่ในที่สุด sudo iptables -t nat -A โพสต์ -o wan1 -j MASQUERADE โดย

sudo iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o wan1 -j MASQUERADE

สามารถใช้ Wireshark (หรือ tshark, tcpdump) เพื่อวินิจฉัยทั้งสองอินเทอร์เฟซพร้อมกันได้

การวิเคราะห์เพิ่มเติม

อาจมีสาเหตุหลายประการที่ทำให้เราเตอร์ของคุณไม่ทำงาน:

  • ไม่ได้เปิดใช้งานการส่งต่อ IP
  • ไม่สามารถเข้าถึงเซิร์ฟเวอร์ DNS สำหรับโฮสต์ LAN
  • การตั้งค่า NAT (การแปลที่อยู่เครือข่าย) ใช้ไม่ได้กับโฮสต์ LAN
  • ...

รีบูทพีซีของคุณเพื่อรับบริการทั้งหมดสู่สถานะปกติ

อย่าใช้ชื่อแต่เป็นที่อยู่ IP ที่เป็นตัวเลขในการทดสอบ ping จนกว่าคุณจะตรวจสอบว่าการทดสอบอื่นๆ คุณกำจัดปัญหา DNS พร้อมกันที่เป็นไปได้ด้วยวิธีนี้

การทดสอบ 1

ตรวจสอบสถานะการกำหนดเส้นทาง IP (การส่งต่อ) (ผลลัพธ์ 1 หมายความว่าเปิดใช้งานการส่งต่อ):

แมว /proc/sys/net/ipv4/ip_forward

การทดสอบ 2

ตรวจสอบการตั้งค่า NAT (masquerade) ที่ถูกต้องสำหรับอินเทอร์เฟซ LAN ของคุณ:

ปิง -c 3 8.8.8.8
ปิง -c 3 -I 192.168.3.1 8.8.8.8

คำสั่งแรกด้านบนคือการทดสอบการเข้าถึงที่อยู่ IP ปลายทาง คุณต้องได้รับการตอบกลับ ping ที่ถูกต้อง 3 ครั้ง คำสั่งที่สองทดสอบว่า NAT ใช้งานได้กับที่อยู่ IP ของ LAN ของคุณหรือไม่ หากคุณไม่ได้รับการตอบกลับ แสดงว่ามาสเคอเรดไม่สามารถแปลที่อยู่ต้นทางของคุณ 192.168.3.1 ได้ และที่อยู่อื่น ๆ ของคุณใน LAN (192.168.3.0/24) ก็มีปัญหาเช่นเดียวกัน ตรวจสอบส่วน NAT ของคุณในการตั้งค่า iptables อย่างระมัดระวัง ทำการทดสอบต่อไปหากการตั้งค่า NAT ดูดี แต่คุณไม่ได้รับการตอบสนอง ping

หากการตอบสนอง ping เป็นปกติ แต่โหนดเครือข่ายอื่นๆ ใน LAN ยังไม่สามารถ ping ไปที่ 8.8.8.8 ได้ วิธีแก้ไขที่เป็นไปได้คือระบุที่อยู่เครือข่ายให้สมบูรณ์ (ไม่ใช่เฉพาะของตัวเอง br ที่อยู่อินเทอร์เฟซ 192.168.3.1) เป็นแหล่งที่มาสำหรับ NAT:

sudo iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o wan1 -j MASQUERADE

การทดสอบ 3

แพ็กเก็ต WAN ขาออกและที่อยู่ IP:

ยืนยันการ tcpdump ติดตั้งแล้วติดตั้งหากไม่มีอยู่

ซึ่ง tcpdump
sudo apt-get ติดตั้ง tcpdump

กระบวนการที่อธิบายไว้จะแนะนำให้คุณตรวจสอบการทำงานของ tcpdump และการบันทึกข้อมูลเครือข่าย คุณสามารถหยุดกระบวนการจับภาพได้โดยการกด Ctrl+C ในการเรียกใช้หน้าต่างอินสแตนซ์ tcpdump เปิดหน้าต่างเทอร์มินัลที่สอง (T2) อันดับแรก (T1) จะใช้สำหรับการสร้างการรับส่งข้อมูลและการตรวจสอบการตอบสนอง คุณจะใช้เทอร์มินัลที่สอง (T2) เพื่อเริ่มและหยุดงานการจับภาพโดยใช้ tcpdump เป็นไปได้ที่จะใช้เพียงเทอร์มินัลเดียวสำหรับทั้งสองงาน แต่หากคุณไม่คุ้นเคยกับการสลับงานเบื้องหน้าและเบื้องหลัง การใช้สองเทอร์มินัลจะปลอดภัยกว่า

ที2

sudo tcpdump -i wan1 -n icmp และโฮสต์ 8.8.8.8

ที1

ping -c 2 8.8.8.8

คุณจะเห็นแพ็กเก็ตขาออก ICMP สองชุด (คำขอเสียงสะท้อน) และการตอบสนองเสียงสะท้อนขาเข้าสองชุด ดูที่อยู่ IP ต้นทางและปลายทาง แพ็กเก็ตขาออกมี IP ปลายทาง 8.8.8.8 และต้นทางคือที่อยู่ IP WAN สาธารณะของคุณ คุณจะเปรียบเทียบกับที่อยู่ที่แสดงในขั้นตอนถัดไป

กดปุ่ม Enter ในเทอร์มินัล T2 เพื่อสร้างพื้นที่บรรทัดใหม่ในเอาต์พุตของการทำงาน tcpdump. ช่วยให้คุณแยกข้อมูลที่บันทึกเก่าและใหม่ในหน้าต่าง

ที1

ปิง -c 2 -I 192.198.3.1 8.8.8.8

คุณเห็นอะไร? มีความเป็นไปได้เหล่านี้:

  • ไม่มีการจับแพ็กเก็ต
  • เฉพาะแพ็กเก็ตขาออกเท่านั้นที่แสดงและมีที่อยู่ IP ต้นทางที่ไม่ถูกต้อง (เช่น 192.168.3.1 แทนที่จะเป็นที่อยู่ IP สาธารณะของอินเทอร์เฟซ WAN)
  • มองเห็นทั้งแพ็กเก็ตขาออกและขาเข้า

ทำลาย tcpdump ในหน้าต่าง T2 (Ctrl+C) โปรดคัดลอกคำตอบจาก T2 แล้ววางลงในคำตอบของคุณที่นี่ เพิ่มการตอบสนองของ เส้นทางไอพี และในที่สุดคำสั่งเหล่านี้:

ไอพีใกล้
sudo iptables-บันทึก

อธิบายผลการทดสอบอื่นๆ

Cooper Max avatar
vn flag
ฉันลองและ iptables ถูกแก้ไข แต่ก็ยังไม่มีโอกาส ฉันสงสัยว่าคุณมีความคิดอื่นหรือไม่ ขอบคุณ!

โพสต์คำตอบ

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