Điểm:0

Khách hàng không có quyền truy cập Internet trong khi bộ định tuyến Ubuntu 20.04 thì có

lá cờ vn

Gần đây tôi đang cố định cấu hình Ubuntu 20.04 của mình làm bộ định tuyến. Một vấn đề kỳ lạ xảy ra khi tôi nghĩ rằng mình đã hoàn thành tất cả các bước, đó là các máy khách kết nối với bộ định tuyến Ubuntu không có quyền truy cập Internet trong khi bản thân bộ định tuyến Ubuntu thì có.

Trước khi đặt cấu hình ở đây, tôi sẽ đưa ra một bức tranh về cách bộ định tuyến liên kết với các thiết bị khác:

Bộ định tuyến cấp một >---< [WAN] Bộ định tuyến Ubuntu (IP động) [LAN]>---< Máy khách (DHCP)

Làm theo hướng dẫn, tôi đã thực hiện các cấu hình này trên bộ định tuyến Ubuntu. /etc/netplan/00-installer-config.yaml:

mạng:
  ethernet:
    wan1:
      trận đấu:
        macaddress: xx:xx:xx:xx:xx:01
      tên đặt: wan1
    dhcp4: có
  eth1:
    trận đấu:
      macaddress: xx:xx:xx:xx:xx:02
    tên đặt: eth1
    dhcp4: không
cầu:
  anh:
    giao diện:
      - eth1
    địa chỉ:
      - 192.168.3.1/24

Đầu ra ifconfig ở đây:

br: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
    inet 192.168.3.1 netmask 255.255.255.0 phát sóng 192.168.3.255
    inet6 fe80::f0de:2aff:fe06:98ad tiền tốlen 64 phạm vi 0x20<link>
    ether a4:1a:3a:b6:08:b5 txqueuelen 1000 (Ethernet)
    Gói RX 7283 byte 456695 (456,6 KB)
    Lỗi RX 0 bị rớt 0 tràn 0 khung hình 0
    Gói TX 295 byte 36494 (36,4 KB)
    Lỗi TX 0 bị rớt 0 tràn 0 sóng mang 0 va chạm 0

eth1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
    ether a4:1a:3a:b6:08:b5 txqueuelen 1000 (Ethernet)
    Gói RX 7283 byte 558657 (558,6 KB)
    Lỗi RX 0 bị rớt 0 tràn 0 khung hình 0
    Gói TX 287 byte 35750 (35,7 KB)
    Lỗi TX 0 bị rớt 0 tràn 0 sóng mang 0 va chạm 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
    inet 127.0.0.1 mặt nạ mạng 255.0.0.0
    inet6 ::1 tiền tốlen 128 phạm vi 0x10<máy chủ>
    vòng lặp txqueuelen 1000 (Local Loopback)
    Gói RX 7941154 byte 604164948 (604,1 MB)
    Lỗi RX 0 bị rớt 0 tràn 0 khung hình 0
    Gói TX 7941154 byte 604164948 (604,1 MB)
    Lỗi TX 0 bị rớt 0 tràn 0 sóng mang 0 va chạm 0

wan1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.1.4 netmask 255.255.255.0 phát sóng 192.168.1.255
    inet6 fe80::da50:e6ff:fe3f:fdcb tiền tốlen 64 phạm vi 0x20<link>
    inet6 2409:8a50:1873:70b3:da50:e6ff:fe3f:fdcb tiền tốlen 64 phạm vi 0x0 <toàn cầu>
    ether d8:50:e6:3f:fd:cb txqueuelen 1000 (Ethernet)
    Gói RX 39031 byte 3017742 (3,0 MB)
    Lỗi RX 0 bị rớt 2229 tràn 0 khung hình 0
    Gói TX 35636 byte 36600911 (36,6 MB)
    Lỗi TX 0 bị rớt 0 tràn 0 sóng mang 0 va chạm 0

Ngoài ra, tôi đã bật chuyển tiếp ipv4 bằng cách thêm dòng này vào /etc/sysctl.conf:

net.ipv4.ip chuyển tiếp=1

Iptables được đặt thành dòng sau bên dưới và được duy trì bằng cách làm cho systemd chạy iptables-restore khi khởi động:

sudo iptables -t nat -A POSTROUTING -o wan1 -j MASQUERADE

Tôi đã cài đặt dnsmasq và chỉnh sửa /etc/dnsmasq.conf thành như sau: (systemd-resolved đã bị dừng và vô hiệu hóa)

địa chỉ nghe=127.0.0.1,192.168.3.1
cổng = 53
giao diện = eth1
dhcp-range=192.168.3.100,192.168.3.199,255.255.255.0,24h
dhcp-option=tuỳ chọn:bộ định tuyến,192.168.3.1
dhcp-option=option:dns-server,192.168.3.1

Sau khi tôi định cấu hình chúng, có vẻ như nó đã hoạt động. Tôi có thể xác nhận rằng DHCP đang hoạt động vì tôi có thể xem nhật ký của dnsmasq và bản thân Bộ định tuyến Ubuntu có quyền truy cập Internet.

Nhưng có gì đó không ổn. Từ thiết bị Máy khách, tôi đã thử ping một tên miền. Miền đã được phân giải thành địa chỉ IPV4 chính xác, nhưng khách hàng không thể truy cập vào nó. Sau đó, tôi ping từ máy khách đến bộ định tuyến và ngược lại, cả hai đều hoạt động. Hướng dẫn tôi làm theo không bao giờ đề cập đến điều này.Vui lòng cho tôi biết nếu bạn có bất kỳ ý tưởng nào tại sao nó không hoạt động, cảm ơn trước!

David avatar
lá cờ cn
Xin vui lòng không gửi hình ảnh của văn bản. Cắt và chuyển đầu ra đó vào phần nội dung của câu hỏi.
Điểm:0
lá cờ br

Hãy thử thêm quy tắc này:

iptables -A FORWARD --in-interface br -j CHẤP NHẬN

và cuối cùng thay thế sudo iptables -t nat -A POSTROUTING -o wan1 -j MASQUERADE qua

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

Có thể sử dụng Wireshark (hoặc tshark, tcpdump) để chẩn đoán đồng thời trên cả hai giao diện.

phân tích mở rộng

Có thể có nhiều lý do khiến bộ định tuyến của bạn không hoạt động:

  • Chuyển tiếp IP không được bật
  • Máy chủ DNS không thể truy cập được đối với máy chủ LAN
  • Cài đặt NAT (dịch địa chỉ mạng) không hoạt động đối với máy chủ LAN
  • ...

Khởi động lại PC của bạn để đưa tất cả các dịch vụ về trạng thái bình thường.

Không sử dụng tên trừ địa chỉ IP số để kiểm tra ping cho đến khi bạn xác minh rằng tất cả các kiểm tra khác được liệt kê bên dưới đều ổn. Bạn loại bỏ sự cố DNS đồng thời có thể xảy ra bằng cách này.

kiểm tra 1

Kiểm tra trạng thái định tuyến IP (chuyển tiếp) (kết quả 1 có nghĩa là chuyển tiếp được bật):

mèo /proc/sys/net/ipv4/ip_forward

kiểm tra 2

Kiểm tra cài đặt NAT (giả trang) chính xác cho giao diện mạng LAN của bạn:

ping -c 3 8.8.8.8
ping -c 3 -I 192.168.3.1 8.8.8.8

Lệnh đầu tiên ở trên là kiểm tra khả năng truy cập của địa chỉ IP đích. Bạn phải nhận được 3 phản hồi ping hợp lệ. Lệnh thứ hai kiểm tra xem NAT có hoạt động với các địa chỉ IP LAN của bạn hay không. Nếu bạn không nhận được phản hồi, điều đó có nghĩa là masquerade không thể dịch địa chỉ nguồn của bạn 192.168.3.1. và các địa chỉ khác của bạn trong mạng LAN (192.168.3.0/24) cũng gặp vấn đề tương tự. Xác minh phần NAT của bạn trong cài đặt iptables thật cẩn thận. Tiếp tục thực hiện các kiểm tra tiếp theo nếu cài đặt NAT có vẻ ổn, nhưng bạn không nhận được phản hồi ping.

Nếu phản hồi ping OK nhưng các nút mạng khác trong mạng LAN vẫn không thể ping tới 8.8.8.8, thì giải pháp khả thi là chỉ định địa chỉ mạng đầy đủ (không chỉ riêng anh địa chỉ giao diện 192.168.3.1) làm nguồn cho NAT:

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

kiểm tra 3

Các gói WAN gửi đi và địa chỉ IP của chúng:

xác minh tcpdump được cài đặt và cài đặt nó, nếu nó không có.

tcpdump nào
sudo apt-get cài đặt tcpdump

Quy trình được mô tả sẽ hướng dẫn bạn kiểm tra chức năng tcpdump và thu thập dữ liệu mạng. Bạn có thể dừng quá trình chụp bằng cách nhấn Ctrl + C trong cửa sổ phiên bản tcpdump đang chạy. Mở cửa sổ đầu cuối thứ hai (T2). Đầu tiên (T1) sẽ được sử dụng để tạo lưu lượng truy cập và kiểm tra phản hồi. Bạn sẽ sử dụng thiết bị đầu cuối thứ hai (T2) để bắt đầu và dừng các tác vụ chụp bằng tcpdump. Có thể chỉ sử dụng một thiết bị đầu cuối cho cả hai tác vụ, nhưng nếu bạn không quen với việc chuyển đổi tác vụ nền trước và nền sau, thì sử dụng hai thiết bị đầu cuối sẽ an toàn hơn.

T2

sudo tcpdump -i wan1 -n icmp và máy chủ 8.8.8.8

T1

ping -c 2 8.8.8.8

Bạn sẽ thấy hai gói gửi đi ICMP (yêu cầu tiếng vang) và hai phản hồi tiếng vang đến. Xem địa chỉ IP nguồn và đích của họ. Gói gửi đi có IP đích 8.8.8.8 và nguồn là địa chỉ IP WAN công khai của bạn. Bạn sẽ so sánh chúng với các địa chỉ được hiển thị trong bước tiếp theo.

Nhấn phím Enter trong thiết bị đầu cuối T2 để tạo không gian dòng mới ở đầu ra của hoạt động tcpdump. Nó giúp bạn tách dữ liệu đã chụp cũ và mới trong cửa sổ.

T1

ping -c 2 -I 192.198.3.1 8.8.8.8

Bạn thấy gì? Có những khả năng sau:

  • không có gói tin nào bị bắt
  • chỉ các gói gửi đi được hiển thị và chúng có địa chỉ IP nguồn sai (ví dụ: 192.168.3.1 thay vì địa chỉ IP công cộng của giao diện WAN.)
  • cả các gói đi và đến đều có thể nhìn thấy.

phá vỡ tcpdump trong cửa sổ T2 (Ctrl+C). Vui lòng sao chép phản hồi từ T2 và dán vào câu trả lời của bạn tại đây. Thêm câu trả lời của lộ trình ip và cuối cùng là các lệnh này:

ip gần
Sudo iptables-save

Mô tả kết quả của các thử nghiệm khác.

Cooper Max avatar
lá cờ vn
Tôi đã thử và iptables đã được sửa đổi nhưng vẫn không có cơ hội. Không biết bạn có ý kiến ​​gì khác không, dù sao cũng cảm ơn!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.