Score:0

กฎ IPSec iptables สำหรับบริการในพื้นที่

ธง in

ฉันมีเซิร์ฟเวอร์การเข้าถึงระยะไกล StrongSwan IPSec ที่ทำงานบน RHEL และไคลเอนต์ทั้งหมดบนเครือข่ายท้องถิ่นเดียวกัน ฉันมีเซิร์ฟเวอร์ Samba ที่ทำงานบนโฮสต์ RHEL เดียวกันกับที่ฉันต้องการให้ใช้งานได้ผ่าน VPN แต่ไม่ให้อยู่นอกอุโมงค์ ฉันสามารถรับอุโมงค์ IPSec ได้สำเร็จ (ต้องสร้างโปรไฟล์ MacOS ด้วย Apple Configurator2 ที่เปิดใช้งาน Perfect Forward Security เพื่อให้มีการจับคู่การเข้ารหัส) แต่ฉันไม่สามารถรับปริมาณข้อมูลไปยังเส้นทางภายในเซิร์ฟเวอร์ได้อย่างถูกต้องฉันได้ทำการจับแพ็กเก็ตและเห็น ESP ขาเข้าและแพ็กเก็ต ICMP ที่ถอดรหัสจากการ ping จากไคลเอนต์ แต่เซิร์ฟเวอร์ไม่สามารถตอบกลับได้ ฉันใช้เวลาหลายสัปดาห์เพื่อค้นหาว่ากฎ iptables ใดที่ฉันต้องใช้ในการเชื่อมต่อ แต่ฉันคิดว่าฉันขาดความเข้าใจบางอย่าง ฉันสามารถตั้งค่า OpenVPN และ WireGuard VPN ได้โดยไม่มีปัญหากับอินเทอร์เฟซ tun แต่ IPSec ตามความเข้าใจของฉันถูกถอดรหัสโดยนโยบายในเคอร์เนล ดังนั้นฉันจึงไม่ทราบว่าจะส่งผลต่อการกำหนดเส้นทางอย่างไร

ฉันใช้การตั้งค่าของฉันจากเอกสารตัวอย่าง StrongSwan อย่างเป็นทางการสำหรับ การเข้าถึงระยะไกลใช้สิ่งนี้ เอกสารการกำหนดค่า swanctlอ่านโพสต์ในฟอรัมและแปลรูปแบบเก่าเป็นรูปแบบใหม่ด้วย นี้ - เช่นเดียวกับการอ่านเกี่ยวกับ การส่งต่อ และ VPN ตามเส้นทาง - แต่ฉันคิดว่าฉันขาดความเข้าใจระดับสูงเกี่ยวกับเส้นทางการรับส่งข้อมูลภายในเซิร์ฟเวอร์ VPN

ไดอะแกรมเครือข่ายเชิงตรรกะ

ไดอะแกรมเครือข่ายเชิงตรรกะ

swanctl.conf (พร้อมแสดงความคิดเห็นในสิ่งอื่นที่ฉันได้ลอง)

การเชื่อมต่อ {
        ikev2-vpn {
                การกระจายตัว = ใช่
                rekey_time=0 วินาที
                #โมไบค์ = ไม่
                รุ่น=2
                ข้อเสนอ = aes256gcm16-prfsha384-ecp384
                remote_addrs=%ใดๆ
                local_addrs=192.168.1.15
                #vips=10.0.3.1
                #remote_addrs=192.168.1.23
                #pools=10.0.3.0/24
                #encap=ใช่
                #dpd_delay=300 วินาที
                พูล=พูล1,พูล2
        #if_id_in=6
        #if_id_out=6
                เด็ก {
                        ikev2-vpn {
                                #start_action=ไม่มี
                                esp_proposals=aes256gcm16-prfsha384-ecp384
                                #local_ts=10.0.3.1/32
                                local_ts=10.0.1.0/24
                                remote_ts=10.0.2.0/24
                                #remote_ts=10.0.3.10-10.0.3.200
                                #dpd_action=ชัดเจน
                                updown=/usr/libexec/strongswan/_updown iptables
                        }

                }
                ท้องถิ่น {
                        รับรองความถูกต้อง=ecdsa-384-sha384
                        certs = /etc/strongswan/ipsec.d/certs/server.crt
                        id = 192.168.1.15
                }
                ระยะไกล {
                        รับรองความถูกต้อง=ecdsa-384-sha384
                        id = % ใดๆ
                }
        }
}
สระว่ายน้ำ {
        พูล1 {
                #addrs=10.0.3.0/24
                แอดเดรส=10.0.1.0/24
        }
        พูล 2 {
                #addrs=10.0.3.10-10.0.3.200
                แอดเดรส=10.0.2.0/24
        }
}
ความลับ {
        เซิร์ฟเวอร์ ecdsa {
                file=/etc/strongswan/ipsec.d/private/server.key
        }
        ลูกค้า ecdsa {
                file=/etc/strongswan/ipsec.d/private/client.key
        }
}
เจ้าหน้าที่ {
        การรับรอง {
                cacert = /etc/strongswan/ipsec.d/cacerts/ca.crt
        }
}

swanctl --รายการ-sas

ikev2-vpn: #2 ตั้งค่าแล้ว IKEv2 c98d6dc49ca0acd4_i 85342c9a0809e294_r*
  ท้องถิ่น '192.168.1.15' @ 192.168.1.15[4500]
  ระยะไกล 'client2.vpn' @ 192.168.1.23[4500] [10.0.1.1]
  AES_GCM_16-256/PRF_HMAC_SHA2_384/ECP_384
  ก่อตั้งขึ้นเมื่อปี 53 ที่ผ่านมา
  ikev2-vpn: #4, reqid 1, ติดตั้ง, อุโมงค์, ESP:AES_GCM_16-256
    ติดตั้งเมื่อ 53 วินาทีที่แล้ว คีย์ใหม่ในปี 3247 หมดอายุในปี 3907
    ใน c334ea0b, 0 ไบต์, 0 แพ็กเก็ต
    ออก 021348d4, 0 ไบต์, 0 แพ็คเก็ต
    ท้องถิ่น 10.0.1.0/24
    ระยะไกล 10.0.2.0/24

swanctl --list-conns

ikev2-vpn: IKEv2 ไม่มีการตรวจสอบสิทธิ์ซ้ำ ไม่มีการคีย์ซ้ำ
  ท้องถิ่น: 192.168.1.15
  ระยะไกล: % ใด ๆ
  การรับรองความถูกต้องของรหัสสาธารณะในเครื่อง:
    รหัส: 192.168.1.15
    ใบรับรอง: [CERT_DN]
  การตรวจสอบคีย์สาธารณะระยะไกล:
    รหัส: %ใด ๆ
  ikev2-vpn: TUNNEL ทำการรีคีย์ทุกๆ 3600 วินาที
    ท้องถิ่น: 10.0.1.0/24
    ระยะไกล: 10.0.2.0/24

สถานะ ip -s xfrm

src 192.168.1.15 dst 192.168.1.23
        proto esp spi 0x021348d4(34818260) reqid 1(0x00000001) โหมดอุโมงค์
        หน้าต่างเล่นซ้ำ 0 วินาที 0x00000000 ตั้งค่าสถานะ af-unspec (0x00100000)
        aead rfc4106(gcm(aes)) [คีย์] (288 บิต) 128
        บริบทต่อต้านการเล่นซ้ำ: seq 0x0, oseq 0x0, บิตแมป 0x00000000
        การกำหนดค่าตลอดอายุการใช้งาน:
          ขีดจำกัด: ซอฟต์ (INF)(ไบต์), ฮาร์ด (INF)(ไบต์)
          ขีด จำกัด : อ่อน (INF) (แพ็คเก็ต), ฮาร์ด (INF) (แพ็คเก็ต)
          หมดอายุเพิ่ม: soft 3418(วินาที), hard 3960(sec)
          หมดอายุการใช้งาน: นุ่มนวล 0(วินาที), แข็ง 0(วินาที)
        อายุการใช้งานปัจจุบัน:
          0 (ไบต์), 0 (แพ็คเก็ต)
          เพิ่ม [เวลา] ใช้ -
        สถิติ:
          หน้าต่างเล่นซ้ำ 0 เล่นซ้ำ 0 ล้มเหลว 0
src 192.168.1.23 dst 192.168.1.15
        proto esp spi 0xc334ea0b(3275024907) reqid 1(0x00000001) อุโมงค์โหมด
        หน้าต่างเล่นซ้ำ 32 วินาที 0x00000000 ตั้งค่าสถานะ af-unspec (0x00100000)
        aead rfc4106(gcm(aes)) [คีย์] (288 บิต) 128
        บริบทป้องกันการเล่นซ้ำ: seq 0xc, oseq 0x0, bitmap 0x00000fff
        การกำหนดค่าตลอดอายุการใช้งาน:
          ขีดจำกัด: ซอฟต์ (INF)(ไบต์), ฮาร์ด (INF)(ไบต์)
          ขีด จำกัด : อ่อน (INF) (แพ็คเก็ต), ฮาร์ด (INF) (แพ็คเก็ต)
          หมดอายุเพิ่ม: soft 3300(sec), hard 3960(sec)
          หมดอายุการใช้งาน: นุ่มนวล 0(วินาที), แข็ง 0(วินาที)
        อายุการใช้งานปัจจุบัน:
          1,008 (ไบต์), 12 (แพ็กเก็ต)
          เพิ่ม [เวลา] ใช้ [เวลา]
        สถิติ:
          หน้าต่างเล่นซ้ำ 0 เล่นซ้ำ 0 ล้มเหลว 0

แสดงนโยบาย ip xfrm

src 10.0.1.0/24 dst 10.0.2.0/24 
        ลำดับความสำคัญ 375423 ptype main 
        tmpl src 192.168.1.15 dst 192.168.1.23
                proto esp spi 0x021348d4 reqid 1 โหมดอุโมงค์
src 10.0.2.0/24 dst 10.0.1.0/24 
        dir fwd ลำดับความสำคัญ 375423 ptype หลัก 
        tmpl src 192.168.1.23 dst 192.168.1.15
                อุโมงค์โหมด proto esp reqid 1
src 10.0.2.0/24 dst 10.0.1.0/24 
        ลำดับความสำคัญ 375423 ptype main 
        tmpl src 192.168.1.23 dst 192.168.1.15
                อุโมงค์โหมด proto esp reqid 1
src 0.0.0.0/0 dst 0.0.0.0/0 
        ซ็อกเก็ตที่มีลำดับความสำคัญ 0 ptype main 
src 0.0.0.0/0 dst 0.0.0.0/0 
        ลำดับความสำคัญของซ็อกเก็ตเอาท์พุต 0 ptype main 
src 0.0.0.0/0 dst 0.0.0.0/0 
        ซ็อกเก็ตที่มีลำดับความสำคัญ 0 ptype main 
src 0.0.0.0/0 dst 0.0.0.0/0 
        ลำดับความสำคัญของซ็อกเก็ตเอาท์พุต 0 ptype main 
src ::/0 dst ::/0 
        ซ็อกเก็ตที่มีลำดับความสำคัญ 0 ptype main 
src ::/0 dst ::/0 
        ลำดับความสำคัญของซ็อกเก็ตเอาท์พุต 0 ptype main 
src ::/0 dst ::/0 
        ซ็อกเก็ตที่มีลำดับความสำคัญ 0 ptype main 
src ::/0 dst ::/0 
        ลำดับความสำคัญของซ็อกเก็ตเอาท์พุต 0 ptype main 

iptables-บันทึก

# สร้างโดย iptables-save v1.8.4
*ความปลอดภัย
: ยอมรับอินพุต [22858074:106762962340]
:ส่งต่อ ยอมรับ [7:588]
: ยอมรับเอาต์พุต [13832427:3964756363]
ให้สัญญา
# สร้างโดย iptables-save v1.8.4
*ดิบ
: ยอมรับ [22858911:106763119967]
: ยอมรับเอาต์พุต [13832428:3964756655]
ให้สัญญา
# สร้างโดย iptables-save v1.8.4
* แหลกเหลว
: ยอมรับ [22858911:106763119967]
: ยอมรับอินพุต [22858308:106763007491]
:ส่งต่อ ยอมรับ [7:588]
: ยอมรับเอาต์พุต [13832428:3964756655]
: ยอมรับภายหลัง [13833383:3964877586]
:LIBVIRT_PRT - [0:0]
-A โพสต์ -j LIBVIRT_PRT
-A LIBVIRT_PRT -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-เติม
ให้สัญญา
# สร้างโดย iptables-save v1.8.4
*แนท
: ยอมรับ [186346:34394324]
: ยอมรับอินพุต [185651:34259782]
: ยอมรับภายหลัง [16086:1727773]
: ยอมรับเอาต์พุต [16085:1727689]
:LIBVIRT_PRT - [0:0]
-A โพสต์ -j LIBVIRT_PRT
-A โพสต์ -s 172.16.0.0/24 -o enp0s31f6 -j MASQUERADE
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j กลับ
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j กลับ
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-พอร์ต 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j สวมหน้ากาก
ให้สัญญา
# สร้างโดย iptables-save
*กรอง
: ยอมรับอินพุต [22831621:106727043679]
:ส่งต่อ ยอมรับ [0:0]
: ยอมรับเอาต์พุต [13832420:3964757167]
:LIBVIRT_INP - [0:0]
:LIBVIRT_OUT - [0:0]
:LIBVIRT_FWO - [0:0]
:LIBVIRT_FWI - [0:0]
:LIBVIRT_FWX - [0:0]
-A FORWARD -s 10.0.2.0/24 -d 10.0.1.0/24 -i enp0s31f6 -m นโยบาย --dir ใน --pol ipsec --reqid 1 --proto esp -j ยอมรับ
-A FORWARD -s 10.0.1.0/24 -d 10.0.2.0/24 -o enp0s31f6 -m นโยบาย --dir ออก --pol ipsec --reqid 1 --proto esp -j ยอมรับ
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j ยอมรับ
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j ยอมรับ
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j ยอมรับ
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j ยอมรับ
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 53 -j ยอมรับ
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 53 -j ยอมรับ
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j ยอมรับ
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 68 -j ยอมรับ
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j ยอมรับ
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j ยอมรับ
ให้สัญญา
Ginnungagap avatar
gu flag
คุณสามารถเพิ่ม IP ที่คุณ ping และ IP ใดที่คุณพยายามเข้าถึง Samba ได้หรือไม่
joe_shmo avatar
in flag
แน่นอน. ไม่แน่ใจว่าไดอะแกรมเครือข่ายแสดงได้ดีหรือไม่หรือฉันอธิบายได้ไม่ดี แต่ฉันส่ง Ping จากไคลเอ็นต์ที่ 10.0.2.1 ไปยังเซิร์ฟเวอร์ StrongSwan/Samba ที่ 10.0.1.1 มันมาถึงเซิร์ฟเวอร์และถูกถอดรหัส แต่ไม่ได้กำหนดเส้นทางกลับไปยังไคลเอนต์และฉันต้องการให้เซิร์ฟเวอร์ Samba สามารถเข้าถึงได้จาก 10.0.1.1 เดียวกันกับเซิร์ฟเวอร์ StrongSwan เนื่องจากเป็นเครื่องจริงเดียวกันในระบบ RHEL เดียวกัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา