Điểm:-1

Tại sao thiết lập định tuyến này không hoạt động

lá cờ cn

Tôi có hai giao diện trên máy chủ. đầu ra của lộ trình ip tiếp theo là:

mặc định qua 192.168.100.1 dev enp1s0 số liệu tĩnh proto 100
10.8.0.0/24 dev tap0 liên kết phạm vi kernel proto src 10.8.0.1
192.168.100.0/24 dev enp1s0 liên kết phạm vi kernel proto src 192.168.100.201 số liệu 100

địa chỉ IP tiếp theo (MAC bị ẩn):

...
1: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc trạng thái fq_codel LÊN nhóm mặc định qlen 1000
    liên kết/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.201/24 brd 192.168.100.255 phạm vi toàn cầu noprefixroute enp1s0
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    inet6 fe80::1409:66c6:eb0d:22a1/64 liên kết phạm vi noprefixroute
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
2: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc trạng thái fq_codel UNKNOWN nhóm mặc định qlen 100
    liên kết/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
    inet 10.8.0.1/24 brd 10.8.0.255 phạm vi toàn cầu tap0
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    liên kết phạm vi inet6 fe80::85:5fff:fe98:6cb7/64
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi

Các /proc/sys/net/ipv4/ip_forward giá trị là 1; tường lửa bị vô hiệu hóa.

Điều tôi muốn là truy cập 192.168.100.1 từ 10.8.0.100. Truy cập máy chủ web (đang lắng nghe tất cả các cổng trên máy này) thông qua cuộn tròn --giao diện 10.8.0.100 http://10.8.0.1 hoạt động tốt. Nhưng mà cuộn tròn --giao diện 10.8.0.100 http://192.168.100.201 đầu ra là mạng không thể truy cập.

Curl bắt đầu bắt tay tcp và đẩy gói tin tới 10.8.0.100 giao diện. Gói tin sau đó đến máy chủ trên 10.8.0.1. Máy chủ nhìn vào gói đích và thấy rằng nó là 192.168.100.201. Sau đó, nó nhìn vào bảng định tuyến và thấy rằng 192.168.100.201 là địa phương. Bây giờ câu trả lời là quay trở lại. Người gửi là 10.8.0.100. Nhìn vào bảng định tuyến, chúng ta có thể thấy rằng nó có thể truy cập thông qua tap0, đó là địa phương. Vì vậy, bây giờ nó đẩy vào tap0 và đạt 10.8.0.100.

Nhưng trên thực tế - nó không phải. Đây có phải là do dòng suy nghĩ của tôi là sai? Tôi nghĩ rằng thông tin được cung cấp bởi bảng được mô tả là đủ để xác định cách chuyển tiếp các gói. Điều này thực sự không đầy đủ?

Điểm:1
lá cờ np

Trước hết, cung cấp địa chỉ IP & giao diện với tham số -I cho ping không phải là từ đồng nghĩa. Đầu tiên cho biết cái nào IP nguồn để chọn. Nó sẽ định tuyến nó theo luồng mạng, bao gồm địa chỉ cục bộ & bảng định tuyến. Thứ hai yêu cầu chọn trực tiếp giao diện để gửi gói tới (và nó sẽ chọn IP được chỉ định đầu tiên làm nguồn).

Tiếp theo, bạn đang làm gì không liên quan gì đến chuyển tiếp gói. Chuyển tiếp có nghĩa là gói phải thực sự đến từ "bên ngoài". Vì bạn đang tạo một gói từ máy chủ này nên không có chuyển tiếp liên quan. Đó là một gói được tạo cục bộ. Vì IP đích của bạn là một trong những địa chỉ được chỉ định cục bộ khi bạn không buộc ping gửi gói đến một giao diện cụ thể "bên ngoài" (với -Tôi giao diện tùy chọn) kernel sẽ xử lý luồng gói này trong nội bộ. Nó sẽ không cố gắng xuất nó sang một giao diện thực vì đích đến của nó là "đã ở đây". Vì vậy, đây là những gì xảy ra và tại sao nó hoạt động trong trường hợp này mà không hoạt động trong trường hợp khác.

Tái bút: Ngoài ra hãy kiểm tra -r tùy chọn của ping công cụ trong trường hợp bạn biết rằng bạn đang làm và cả hai giao diện được gắn vào cùng một miền quảng bá (tôi nghi ngờ điều này với giao diện TAP).

Maxim Khokhryakov avatar
lá cờ cn
Điều tôi thực sự muốn là truy cập `192.168.100.1` từ `10.8.0.100` Vì vậy, tuyến đường sẽ là tiếp theo: 10.8.0.100 --ip--> 10.8.0.1 --kernel-->192.168.100.201-->ip --> 192.168.100.1.
lá cờ np
Sau đó, bạn phải thêm tuyến đường trên `10.8.0.100` vào `192.168.100.0/24` đến `10.8.0.1` (bộ định tuyến của bạn) và tuyến đường ngược tương tự trên `192.168.100.1`. Và ping từ đó (`10.8.0.100`). Điều bạn đang cố gắng làm bây giờ là ping bộ định tuyến từ bộ định tuyến.
Maxim Khokhryakov avatar
lá cờ cn
vấn đề là tôi không thể thêm bất kỳ tuyến đường nào trên 192.168.100.1. Và vấn đề quan trọng hơn là tôi không thể hiểu tại sao cấu hình này không hoạt động. Hãy thực hiện lệnh này trên 10.8.0.100: `ping -I 10.8.0.100 192.168.100.201`. Thao tác này sẽ tạo một gói ICMP, đẩy nó tới giao diện 10.8.0.100 và gửi tới 10.8.0.1. 10.8.0.1 nên chuyển tiếp nó tới 192.168.100.201 (vì cả hai đều trên cùng một máy). Nhưng nó không! `ping -I 10.8.0.100 10.8.0.1` hoạt động tốt, vì vậy vấn đề chắc chắn nằm trong khoảng từ 10.8.0.1 đến 192.168.100.201, tức là trong bảng định tuyến.
lá cờ np
@MaximKhokhryakov `10.8.0.100` có `10.8.0.1` làm tuyến đường mặc định không? Bạn đã không đề cập đến nó. "10.8.0.1 nên chuyển tiếp nó tới 192.168.100.201 (vì cả hai đều trên cùng một máy)" - đó không phải là chuyển tiếp như tôi đã nói. Vấn đề là gói đến máy trên giao diện `tap0`, trong khi IP đích nằm trên `enp1s0`. Rất có thể kernel làm rớt các gói đó do `rp_filter`. Cố gắng tắt nó bằng cách thực hiện `sysctl -w 'net.ipv4.conf.all.rp_filter=0'`
lá cờ np
@MaximKhokhryakov cũng vậy, `192.168.100.1` có `192.168.100.201` được liệt kê là cổng không? Nếu không, bạn phải định cấu hình NAT trên `192.168.100.201` hoặc bạn sẽ không thể truy cập `192.168.100.1` từ `10.8.0.1` vì lần đầu tiên bạn sẽ không biết cách định tuyến các gói trở lại 10.8 .0.0/24.
lá cờ np
Ngoài ra, bạn có thể thử thực hiện `ping -r -I 10.8.0.100 192.168.100.201` từ `10.8.0.100`.
Điểm:0
lá cờ cn

Vấn đề là với sự hiểu lầm về sự khác biệt giữa --giao diện IP--giao diện nhà phát triển. Cái đầu tiên sử dụng bảng định tuyến:

với --giao diện 10.8.0.100 gói sẽ không được chuyển tiếp đến tap0 giao diện (mà ip này thuộc về). Thay vào đó, theo bảng định tuyến, nó sẽ được chuyển tiếp đến 192.168.100.58 (giao diện lan). Vì vậy, tuyến đường là 10.8.0.100 -> 192.168.100.58 -> 192.168.100.201. Ngay cả khi SYN đã được gửi, máy chủ sẽ không phản hồi bằng SYN-ACK một cách kỳ lạ - đó là lý do khiến curl không thành công.

sử dụng --giao diện tap0 tức là địa chỉ lớp liên kết, nó sẽ hoạt động như dự định: 10.8.0.100 -> 10.8.0.1 -> 192.168.100.201. SYN-ACK sẽ được gửi lại bằng cùng một tuyến đường.

Đă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.