ฉันมีสองอินเทอร์เฟซบนเครื่องเซิร์ฟเวอร์ ผลลัพธ์ของ เส้นทางไอพี
ต่อไป:
ค่าเริ่มต้นผ่าน 192.168.100.1 dev enp1s0 proto static metric 100
10.8.0.0/24 dev tap0 ลิงก์ขอบเขตเคอร์เนลโปรโต src 10.8.0.1
192.168.100.0/24 dev enp1s0 โปรโตเคอร์เนลขอบเขตลิงก์ src 192.168.100.201 เมตริก 100
และ ที่อยู่ IP
ถัดไป (MAC ถูกซ่อนไว้):
...
1: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP กลุ่มเริ่มต้น qlen 1000
ลิงค์/อีเธอร์ **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
inet 192.168.100.201/24 brd 192.168.100.255 ขอบเขตทั่วโลก noprefixroute enp1s0
valid_lft ตลอดไป reserved_lft ตลอดไป
inet6 fe80::1409:66c6:eb0d:22a1/64 ลิงค์ขอบเขต noprefixroute
valid_lft ตลอดไป reserved_lft ตลอดไป
2: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN กลุ่มเริ่มต้น qlen 100
ลิงค์/อีเธอร์ **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
inet 10.8.0.1/24 brd 10.8.0.255 ขอบเขต tap0 ทั่วโลก
valid_lft ตลอดไป reserved_lft ตลอดไป
inet6 fe80::85:5fff:fe98:6cb7/64 ลิงค์ขอบเขต
valid_lft ตลอดไป reserved_lft ตลอดไป
เดอะ /proc/sys/net/ipv4/ip_forward
ค่าคือ 1; ไฟร์วอลล์ถูกปิดใช้งาน
ที่ฉันต้องการคือการเข้าถึง 192.168.100.1 จาก 10.8.0.100. เข้าถึงเว็บเซิร์ฟเวอร์ (ซึ่งกำลังฟังทุกพอร์ตในเครื่องนี้) ผ่าน ขด -- อินเทอร์เฟซ 10.8.0.100 http://10.8.0.1
ทำงานได้ดี แต่ ขด - อินเทอร์เฟซ 10.8.0.100 http://192.168.100.201
ผลลัพธ์คือ ไม่สามารถเข้าถึงเครือข่ายได้
.
Curl เริ่มต้นการจับมือ tcp และพุชแพ็กเก็ตไปที่ 10.8.0.100 อินเตอร์เฟซ. จากนั้นแพ็กเก็ตจะไปถึงเครื่องเซิร์ฟเวอร์ 10.8.0.1. เซิร์ฟเวอร์ตรวจสอบจุดปลายทางของแพ็กเก็ตและเห็นว่าเป็นเช่นนั้น 192.168.100.201. จากนั้นดูที่ routing table แล้วจะเห็นว่า 192.168.100.201 เป็นแบบท้องถิ่น
ตอนนี้คำตอบกำลังจะกลับมาแล้ว ผู้ส่งคือ 10.8.0.100. ดูที่ตารางเส้นทางเราพบว่าสามารถเข้าถึงได้ผ่าน แตะ 0
ซึ่งเป็นของท้องถิ่น ตอนนี้ก็เลยรุกเข้าไป แตะ 0
และมาถึง 10.8.0.100
แต่จริงๆแล้ว— มันไม่ใช่. นี่เป็นเพราะความคิดของฉันผิดหรือเปล่า? ฉันคิดว่าข้อมูลที่ให้ไว้ในตารางที่อธิบายนั้นเพียงพอที่จะกำหนดวิธีการส่งต่อแพ็กเก็ต สิ่งนี้ไม่สมบูรณ์จริงหรือ