ฉันมีปัญหาเกี่ยวกับการขุดอุโมงค์และกำลังมีปัญหาในการหาทางออก ฉันมีเซิร์ฟเวอร์สองเครื่อง A: เซิร์ฟเวอร์โฮสต์เป็นเซิร์ฟเวอร์ที่มี IP เดียว และ B: เซิร์ฟเวอร์หลักเป็นเซิร์ฟเวอร์ที่จัดการแอปพลิเคชันทั้งหมดของเรา
ฉันตั้งค่าช่องสัญญาณ GRE ได้ แต่สำหรับแอปพลิเคชันต้องการ (A) เซิร์ฟเวอร์ IP ( 192.168.0.1 ) อยู่บน (B) เซิร์ฟเวอร์ Eth0 ดังนั้นแอปพลิเคชันจึงสามารถใช้ IP เป็นของตัวเองได้ (นี่เป็นสิ่งจำเป็น) อย่างไรก็ตาม เมื่อฉันพยายามเพิ่ม (A) IP ให้กับ (B) ฉันเชื่อว่ามีการกำหนดเส้นทางวนซ้ำ และฉันไม่สามารถหาวิธีทำให้ทราฟฟิกไหลได้อย่างถูกต้อง ฉันได้ลอง PREROUTE และ POSTROUTE บน iptabels แล้ว แต่ไม่ค่อยประสบความสำเร็จ ด้านล่างนี้คือการตั้งค่าที่ฉันไปถึงเมื่อทุกอย่างหยุดทำงาน
ความช่วยเหลือใด ๆ ในเรื่องนี้จะได้รับการชื่นชมอย่างมาก!
รายละเอียด:
เซิร์ฟเวอร์ A: โฮสต์:
IP สาธารณะ: 192.168.0.1
อุโมงค์ IP: 10.0.2.1
เซิร์ฟเวอร์ B: หลัก:
IP สาธารณะ: 192.168.1.2
อุโมงค์ IP: 10.0.2.2
เซิร์ฟเวอร์ A:
เพิ่มอุโมงค์
sudo ip tunnel เพิ่มโหมด test_tunnel gre local 192.168.0.1 remote 192.168.1.2 ttl 255
sudo ip addr เพิ่ม 10.0.2.1/30 dev test_tunnel
ลิงก์ sudo ip ตั้งค่า test_tunnel ขึ้น
sudo echo '101 test_tunnel_GRE' >> /etc/iproute2/rt_tables
เส้นทาง /sbin/ip เพิ่มค่าเริ่มต้นผ่าน 10.0.2.2 dev test_tunnel ตาราง test_tunnel_GRE
/sbin/iptables -t nat -A POSTROUTING -s 10.0.2.0/30 ! -o gre+ -j SNAT --to-source 192.168.0.1
/sbin/iptables -A FORWARD -d 10.0.2.2 -m state --state NEW,ESTABLISHED,RELATED -j ยอมรับ
/sbin/iptables -A FORWARD -s 10.0.2.2 -m state --state NEW,ESTABLISHED,RELATED -j ยอมรับ
ทดสอบ Tunnel IPs เพื่อ ping และดูว่าได้รับการตอบสนองหรือไม่ (ใช้งานได้)
root@A:~# ping -c4 10.0.2.2
PING 10.0.2.2 (10.0.2.2) 56(84) ไบต์ของข้อมูล
64 ไบต์จาก 10.0.2.2: icmp_seq=1 ttl=64 เวลา=50.6 ms
64 ไบต์จาก 10.0.2.2: icmp_seq=2 ttl=64 เวลา=49.6 ms
64 ไบต์จาก 10.0.2.2: icmp_seq=3 ttl=64 เวลา=49.7 ms
64 ไบต์จาก 10.0.2.2: icmp_seq=4 ttl=64 เวลา=49.7 ms
--- สถิติ ping 10.0.2.2 ---
ส่ง 4 แพ็กเก็ต ได้รับ 4 แพ็กเก็ต การสูญเสียแพ็กเก็ต 0% เวลา 3005ms
rtt นาที/เฉลี่ย/สูงสุด/mdev = 49.636/49.945/50.651/0.439 มิลลิวินาที
การทดสอบบนเซิร์ฟเวอร์ควรดู Tunnel Server IP: (ใช้งานได้)
root@A:~# ขด http://www.cpanel.net/showip.cgi --interface 10.0.2.1
192.168.0.1
เซิร์ฟเวอร์ B:
เพิ่มอุโมงค์
sudo ip tunnel เพิ่มโหมด test_tunnel gre local 192.168.1.2 remote 192.168.0.1 ttl 255
sudo ip addr เพิ่ม 10.0.2.2/30 dev test_tunnel
ลิงก์ sudo ip ตั้งค่า test_tunnel ขึ้น
sudo echo '101 test_tunnel_GRE' >> /etc/iproute2/rt_tables
/sbin/ip rule เพิ่มจาก 10.0.2.0/30 ตาราง test_tunnel_GRE
/sbin/เส้นทาง ip เพิ่มค่าเริ่มต้นผ่านตาราง 10.0.2.1 dev test_tunnel test_tunnel_GRE
ทดสอบ Tunnel IPs เพื่อ ping และดูว่าได้รับการตอบสนองหรือไม่ (ใช้งานได้)
[root@B~]# ping -c4 10.0.2.1
PING 10.0.2.1 (10.0.2.1) 56(84) ไบต์ของข้อมูล
64 ไบต์จาก 10.0.2.1: icmp_seq=1 ttl=64 เวลา=51.7 ms
64 ไบต์จาก 10.0.2.1: icmp_seq=2 ttl=64 เวลา=50.0 ms
64 ไบต์จาก 10.0.2.1: icmp_seq=3 ttl=64 เวลา=50.0 ms
64 ไบต์จาก 10.0.2.1: icmp_seq=4 ttl=64 เวลา=50.0 ms
--- สถิติ ping 10.0.2.1 ---
ส่ง 4 แพ็กเก็ต ได้รับ 4 แพ็กเก็ต การสูญเสียแพ็กเก็ต 0% เวลา 3054ms
rtt นาที/เฉลี่ย/สูงสุด/mdev = 50.023/50.458/51.721/0.746 มิลลิวินาที
การทดสอบบนเซิร์ฟเวอร์ควรดู Tunnel Server IP: (ใช้งานได้)
[root@B~]# curl http://www.cpanel.net/showip.cgi --interface 10.0.2.2
192.168.0.1
นี่คือที่ที่มันแตก:
เพิ่ม IP ไปที่ eth0:
ip เป็น 192.168.0.1/32 dev eth0
/sbin/ip rule เพิ่มจากตาราง 192.168.0.1 test_tunnel_GRE
แตกหัก
ตอนนี้ทุกอย่างหยุดทำงานทั้งสองฝั่ง ทั้งเซิร์ฟเวอร์ ping และ curl ทั้งคู่ไม่ตอบสนอง
ฉันขอขอบคุณข้อมูลที่สามารถช่วยฉันแก้ไขปัญหานี้ได้!