พิจารณาจาก วิกิหงส์แกร่งนี่ดูเหมือนจะเป็นปัญหามาตรฐาน แต่ฉันไม่สามารถทำให้มันทำงานได้ถูกต้อง
เค้าโครงเครือข่าย
เว็บไซต์ท้องถิ่น (ลูกค้า
และ ประตู
) อยู่ภายใต้การควบคุมของฉัน ไซต์ระยะไกล (เกตเวย์ระยะไกล
และ เซิร์ฟเวอร์ระยะไกล
) ไม่ใช่. อุโมงค์ 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: [[email protected]] ใช้การรับรองความถูกต้องของคีย์ที่ใช้ร่วมกันล่วงหน้า
ตัวอย่าง ipsec: ระยะไกล: [[email protected]] ใช้การรับรองความถูกต้องของคีย์ที่ใช้ร่วมกันล่วงหน้า
ตัวอย่าง ipsec: เด็ก: ไดนามิก === 0.0.0.0/0 TUNNEL, dpdaction=clear
สมาคมความปลอดภัย (1 ขึ้น 0 เชื่อมต่อ):
example-ipsec[1]: ก่อตั้งเมื่อ 7 นาทีที่แล้ว, 192.168.144.4[[email protected]]...<public-ip-of-the-remote-gateway>[[email protected]]
ตัวอย่าง-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 = "[email protected]"
ขวา = vpn1.example.com
rightid = "[email protected]"
rightsubnet = 0.0.0.0/0
ไฟร์วอลล์ซ้าย = ใช่
นโยบายการติดตั้ง = ใช่
การแลกเปลี่ยนคีย์ = ikev2
พิมพ์ = อุโมงค์
อัตโนมัติ = เริ่มต้น
leftauth = psk
ความถูกต้อง = psk
dpdaction = ชัดเจน
dpddelay = 300 วินาที