พิจารณาจาก วิกิหงส์แกร่งนี่ดูเหมือนจะเป็นปัญหามาตรฐาน แต่ฉันไม่สามารถทำให้มันทำงานได้ถูกต้อง
เค้าโครงเครือข่าย

เว็บไซต์ท้องถิ่น (ลูกค้า และ ประตู) อยู่ภายใต้การควบคุมของฉัน ไซต์ระยะไกล (เกตเวย์ระยะไกล และ เซิร์ฟเวอร์ระยะไกล) ไม่ใช่. อุโมงค์ IPSec คือ แยกอุโมงค์ ดังกล่าวเท่านั้นที่ร้องขอไปยัง 10.10.0.0/16 เครือข่ายย่อยจะถูกส่งผ่านอุโมงค์ IPSec
เป้าหมาย
ฉันต้องการ ลูกค้า เพื่อสื่อสารกับ เซิร์ฟเวอร์ระยะไกล, เช่น. สร้าง จุ๊ๆ หรือ ก สบ การเชื่อมต่อ.
สิ่งที่ฉันทำไปแล้ว
ฉันได้สร้างอุโมงค์ IPSec ระหว่าง ประตู และ เกตเวย์ระยะไกล.
ฉันได้เปิดใช้งานการส่งต่อ ip บน ประตู:
sysctl net.ipv4.ip_forward=1
ฉันได้สร้าง NAT บน ประตู:
iptables -t nat -I POSTROUTING -m นโยบาย --pol ipsec --dir out -j ยอมรับ
iptables -t nat -A โพสต์ -j MASQUERADE
บน ลูกค้า ฉันได้กำหนดเส้นทางการจราจรผ่าน ประตู:
เส้นทาง ip เดลเริ่มต้น
เส้นทาง ip เพิ่มค่าเริ่มต้นผ่าน 192.168.144.4
# 192.168.144.4 เป็นเกตเวย์
ทำงานอะไร
- อุโมงค์ IPSec ถูกสร้างขึ้นและมีเสถียรภาพ
- เมื่อล็อคอินเข้าสู่
ประตู, ฉันสามารถ ปิง เดอะ เกตเวย์ระยะไกล และ เซิร์ฟเวอร์ระยะไกล เรียบร้อยแล้ว ฉันยังสามารถ ปิง เดอะ ลูกค้า. และฉันทำได้ ping google.com.
- เมื่อล็อคอินเข้าสู่
ลูกค้า, ฉันสามารถ ping google.com และฉันทำได้ ปิง เดอะ ประตู. กับ tcpdump icmp บน ประตู ฉันเห็นว่า ping google.com จาก ลูกค้า กำลังจะผ่านไป ประตู.
ยังไม่ได้ผลอะไร
ฉันไม่สามารถ ปิง เดอะ เซิร์ฟเวอร์ระยะไกล จาก ลูกค้า โดย IP ของมัน
ลูกค้า$ ping -c 1 10.10.12.7
PING 10.10.12.7 (10.10.12.7): 56 ไบต์ข้อมูล
--- สถิติ ping 10.10.12.7 ---
ส่ง 1 แพ็กเก็ต ได้รับ 0 แพ็กเก็ต สูญเสียแพ็กเก็ต 100%
จาก tcpdump บน ประตูดูเหมือนว่า ปิง ถูกส่งแต่ไม่ได้ส่งต่อผ่านอุโมงค์:
เกตเวย์ $ tcpdump icmp
13:19:18.122999 IP 192.168.144.7 > 10.10.12.7: คำขอเสียงสะท้อน ICMP, id 15, seq 0, ความยาว 64
13:19:18.123038 เกตเวย์ IP > 10.10.12.7: คำขอเสียงสะท้อน ICMP, id 15, seq 0, ความยาว 64
13:19:18.127534 IP ac5.nue3.m-online.net > เกตเวย์: ICMP net 10.10.12.7 ไม่สามารถเข้าถึงได้ ความยาว 36
13:19:18.127556 IP ac5.nue3.m-online.net > 192.168.144.7: ICMP net 10.10.12.7 ไม่สามารถเข้าถึงได้ ความยาว 36
เนื่องจาก ac5.nue3.m-online.net เป็นผู้ให้บริการอินเทอร์เน็ตของไซต์ท้องถิ่น ฉันคิดว่าแพ็กเก็ตไม่ได้ถูกกำหนดเส้นทางผ่านอุโมงค์ IPSec แต่ผ่านการเชื่อมต่ออินเทอร์เน็ตของ ประตูซึ่งแน่นอนว่าไม่สามารถเข้าถึง เซิร์ฟเวอร์ระยะไกล. (หากฉันทำให้อุโมงค์ IPSec เป็นอุโมงค์เต็มแทนที่จะเป็นอุโมงค์แยก ฉันจะได้ผลลัพธ์เดียวกัน)
ความช่วยเหลือหรือข้อมูลเชิงลึกใด ๆ ที่จะได้รับการชื่นชมจริง ๆ !
แก้ไข: ipsec สถานะทั้งหมด บน ประตู
เกตเวย์> สถานะ ipsec ทั้งหมด
สถานะของ IKE charon daemon (strongSwan 5.8.2, Linux 5.4.0-88-generic, x86_64):
เวลาทำงาน: 7 นาที ตั้งแต่ 08 ต.ค. 08:18:24 น. 2021
malloc: sbrk 3112960, mmap 0, ใช้ 1081456, ฟรี 2031504
เธรดผู้ปฏิบัติงาน: 11 จาก 16 ไม่ได้ใช้งาน, 5/0/0/0 ทำงาน, คิวงาน: 0/0/0/0, กำหนดเวลา: 4
ปลั๊กอินที่โหลดแล้ว: การทดสอบเวกเตอร์ charon ldap pkcs11 tpm aesni aes rc2 sha2 sha1 md5 mgf1 rdrand สุ่ม nonce x509 ข้อจำกัดการเพิกถอน pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem opensl gcrypt af-alg fips-prf gmp curve25519 ตัวแทน chapoly xcc bc cmac hcm cmc hcm ntru drbg curl attr kernel-netlink แก้ไขซ็อกเก็ตเริ่มต้น connmark farp stroke updown eap-identity eap-aka eap-md5 eap-gtc eap-mschapv2 eap-dynamic eap-radius eap-tls eap-ttls eap-peap eap-tnc xauth- ทั่วไป xauth-eap xauth-pam tnc-tnccs dhcp lookip แจ้งข้อผิดพลาด certexpire นำตัวนับ addrblock ความสามัคคี
ที่อยู่ IP ที่รับฟัง:
192.168.144.4
การเชื่อมต่อ:
ตัวอย่าง ipsec: %any...vpn1.example.com IKEv2, dpddelay=300s
example-ipsec: local: [example@example.com] ใช้การรับรองความถูกต้องของคีย์ที่ใช้ร่วมกันล่วงหน้า
ตัวอย่าง ipsec: ระยะไกล: [example@example.com] ใช้การรับรองความถูกต้องของคีย์ที่ใช้ร่วมกันล่วงหน้า
ตัวอย่าง ipsec: เด็ก: ไดนามิก === 0.0.0.0/0 TUNNEL, dpdaction=clear
สมาคมความปลอดภัย (1 ขึ้น 0 เชื่อมต่อ):
example-ipsec[1]: ก่อตั้งเมื่อ 7 นาทีที่แล้ว, 192.168.144.4[example@example.com]...<public-ip-of-the-remote-gateway>[example@example.com]
ตัวอย่าง-ipsec[1]: I: 9d7c74f670bbda86_i* c12b3b4a236b7018_r, การตรวจสอบสิทธิ์คีย์ที่แชร์ล่วงหน้าอีกครั้งใน 2 ชั่วโมง
ตัวอย่าง ipsec[1]: ข้อเสนอ IKE: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
ตัวอย่าง ipsec{1}: ติดตั้ง, อุโมงค์, reqid 1, ESP ใน UDP SPI: cf66ad72_i af3c9348_o
example-ipsec{1}: AES_CBC_256/HMAC_SHA2_256_128, 442 bytes_i (4 pkts, 434s ที่แล้ว), 485 bytes_o (6 pkts, 433s ที่แล้ว), คีย์ใหม่ใน 38 นาที
ตัวอย่าง ipsec{1}: 10.10.102.235/32 === 0.0.0.0/0
นี่คือผลลัพธ์ของ ipsec สถานะทั้งหมด บน ประตู หลังจากส่งไม่สำเร็จ ปิง จาก ลูกค้า ไปที่ เซิร์ฟเวอร์ระยะไกล. เดอะ ปิง จาก ประตู ไม่เปลี่ยน "ไบต์" ในเอาต์พุต "ไบต์" ในเอาต์พุตสอดคล้องกับ ปิง ฉันได้ส่งจาก ประตู ไปที่ เซิร์ฟเวอร์ระยะไกล.
แก้ไข: /etc/ipsec.conf บน ประตู:
# /etc/ipsec.conf
ตัวอย่าง conn-ipsec
ซ้าย = %defaultroute
leftsourceip = %การกำหนดค่า
leftid = "example@example.com"
ขวา = vpn1.example.com
rightid = "example@example.com"
rightsubnet = 0.0.0.0/0
ไฟร์วอลล์ซ้าย = ใช่
นโยบายการติดตั้ง = ใช่
การแลกเปลี่ยนคีย์ = ikev2
พิมพ์ = อุโมงค์
อัตโนมัติ = เริ่มต้น
leftauth = psk
ความถูกต้อง = psk
dpdaction = ชัดเจน
dpddelay = 300 วินาที