Strongswan VPN tunnel ระหว่างสองอินสแตนซ์ AWS จะไม่เชื่อมต่อ


10

ฉันพยายามตั้งค่าอุโมงค์ VPN โดยใช้ StrongSwan 5.1.2 ระหว่างสองอินสแตนซ์ Amazon AWS EC2 ที่ใช้ Ubuntu 14.04.2 LTS ก่อนที่จะใช้ StrongSwan ฉันใช้หงส์เปิด (ฟรี) บน Amazon RedHat AMI ซึ่งทำงานได้ดี ด้วยเหตุผลบางอย่างฉันไม่สามารถทำให้ IKE ทำงานที่นี่เพื่อ StrongSwan ได้ ฉันตรวจสอบการกำหนดค่า AWS ของฉันสามครั้งและทุกอย่างดูดีดังนั้นจึงต้องมีปัญหากับการกำหนดค่า StrongSwan

เป็นคุณจะเห็นด้านล่างแสดงข้อผิดพลาดที่ฉันได้รับคือ"ข้อผิดพลาดในการเขียนไปซ็อกเก็ต: อาร์กิวเมนต์ไม่ถูกต้อง" ฉันดูออนไลน์และหาวิธีแก้ปัญหานี้ไม่ได้จริงๆ ฉันเชื่อมั่นว่า ipsec.conf ที่แข็งแกร่งของฉันมีการกำหนดค่าที่ไม่เหมาะสม

นี่คือสิ่งที่ฉันกำลังทำงานกับ:

Instance #1: N.Virginia - 10.198.0.164 with public EIP 54.X.X.X
Instance #2: Oregon - 10.194.0.176 with public EIP 52.Y.Y.Y

ทอปอโลยี (ง่าย) มีดังต่อไปนี้:

[ Instance #1 within N.Virginia VPC <-> Public internet <-> Instance #2 within Oregon VPC ]

ฉันตรวจสอบว่าการกำหนดค่า AWS ต่อไปนี้ถูกต้อง:

Security groups permit all
IP information is correct
Src/Dest disabled on both instances
ACLs permit all
routes are present and correct (route to 10.x will point to that local instance in order to be routed out to the VPN tunnel)

ด้านล่างนี้คือ/etc/ipsec.conf (นี่คือจากโอเรกอน แต่มันเป็นเหมือนกันในอินสแตนซ์ N.Virginia ยกเว้นซ้าย | ค่าที่เหมาะสมจะกลับ) :

config setup
        charondebug="dmn 2, mgr 2, ike 2, chd 2, job 2, cfg 2, knl 2, net 2, enc 2, lib 2"
conn aws1oexternal-aws1nvexternal
        left=52.Y.Y.Y (EIP)
        leftsubnet=10.194.0.0/16
        right=54.X.X.X (EIP)
        rightsubnet=10.198.0.0/16
        auto=start
        authby=secret
        type=tunnel
        mobike=no
        dpdaction=restart

ด้านล่างคือ /etc/ipsec.secrets * (กลับด้านสำหรับอินสแตนซ์อื่นชัด):

54.X.X.X 52.Y.Y.Y : PSK "Key_inserted_here"

ด้านล่างคือ /etc/strongswan.conf:

charon {
        load_modular = yes
        plugins {
                include strongswan.d/charon/*.conf
        }
}

ด้านล่างคือ /etc/sysctl.conf:

net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

นี่คือการแก้ปัญหาการส่งออกจาก / var / log / syslog ดูเหมือนว่าปัญหาที่นี่คือ "ข้อผิดพลาดการเขียนไปยังซ็อกเก็ต: อาร์กิวเมนต์ไม่ถูกต้องหลังจากทุกสิ่งที่ฉันพยายามฉันยังคงได้รับข้อผิดพลาดเดียวกันนี้ :

Jun 17 17:34:48 ip-10-198-0-164 charon: 13[IKE] retransmit 5 of request with message ID 0
Jun 17 17:34:48 ip-10-198-0-164 charon: 13[NET] sending packet: from 54.X.X.X[500] to 52.Y.Y.Y[500] (1212 bytes)
Jun 17 17:34:48 ip-10-198-0-164 charon: 03[JOB] next event in 75s 581ms, waiting]
Jun 17 17:34:48 ip-10-198-0-164 charon: 16[NET] sending packet: from 54.X.X.X[500] to 52.Y.Y.Y[500]
Jun 17 17:34:48 ip-10-198-0-164 charon: 13[MGR] checkin IKE_SA aws1vexternal-aws1oexternal[1]
Jun 17 17:34:48 ip-10-198-0-164 charon: 13[MGR] check-in of IKE_SA successful.
Jun 17 17:34:48 ip-10-198-0-164 charon: 16[NET] error writing to socket: Invalid argument
Jun 17 17:36:04 ip-10-198-0-164 charon: 03[JOB] got event, queuing job for execution
Jun 17 17:36:04 ip-10-198-0-164 charon: 03[JOB] no events, waiting
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[MGR] checkout IKE_SA
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[MGR] IKE_SA aws1vexternal-aws1oexternal[1] successfully checked out
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[IKE] giving up after 5 retransmits
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[IKE] establishing IKE_SA failed, peer not responding
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[MGR] checkin and destroy IKE_SA aws1vexternal-aws1oexternal[1]
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[IKE] IKE_SA aws1vexternal-aws1oexternal[1] state change: CONNECTING => DESTROYING
Jun 17 17:36:04 ip-10-198-0-164 charon: 08[MGR] check-in and destroy of IKE_SA successful

ด้านล่างเป็นสิ่งที่ฉันได้ลองมาแล้ว:

1) เลเยอร์ที่ตรวจสอบแล้ว 3

2) รีบูตเครื่อง

3) พยายามเพิ่มใน leftid =

4) พยายามทำการอัปเดต IPSec จากนั้นรีสตาร์ท IPSec

5) พยายามเพิ่ม nat_traversal = ใช่ภายใต้การตั้งค่า confif (โปรดทราบว่าสิ่งนี้ไม่สำคัญเนื่องจาก ipsec สถานะทั้งหมดได้รับการตรวจสอบโดยใช้ IKEv2 ซึ่งตามเอกสารจะใช้ nat_traversal โดยอัตโนมัติ)

6) พยายามละเว้น virtual_private <- ถูกใช้ตามเอกสาร AWS openswan ดังนั้นฉันจึงรวมไว้ในการกำหนดค่า strongswan

7) พยายามปิดการใช้งาน net.ipv4.conf.all.send_redirects = 0 และ net.ipv4.conf.all.accept_redirects = 0 ใน /etc/sysctl.conf

8) พยายามใช้ IP ส่วนตัวแทน EIP ฉันไม่ได้รับข้อผิดพลาดของซ็อกเก็ตอีกต่อไป แต่เห็นได้ชัดว่า IP ทั้งสองไม่สามารถสื่อสารกันเพื่อเพียร์ ...

9) พยายามเพิ่มสิ่งนี้ใน strongswan.conf: load = aes des sha1 sha2 md5 gmp สุ่ม nonce hmac stroke kernel-netlink socket-updown เริ่มต้น

10) พยายามใช้ leftfirewall = ใช่ไม่ทำงาน

กรุณาช่วย! ขอบคุณ!

แก้ไข # 1:

คำตอบของไมเคิลช่วยแก้ปัญหาเดิม แต่ฉันมีปัญหาใหม่เกี่ยวกับการกำหนดเส้นทาง อินสแตนซ์ VPN ทั้งสองไม่สามารถ ping ซึ่งกันและกัน นอกจากนี้เมื่อฉันพยายาม ping จากอินสแตนซ์ที่สุ่มในซับเน็ตใดก็ได้ไปยังอีกหนึ่งอินสแตนซ์ที่สุ่มหรืออินสแตนซ์ VPN ที่อยู่ไกลสุดฉันได้รับการตอบสนอง ping ต่อไปนี้:

root@ip-10-194-0-80:~# ping 10.198.0.164
PING 10.198.0.164 (10.198.0.164) 56(84) bytes of data.
From 10.194.0.176: icmp_seq=1 Redirect Host(New nexthop: 10.194.0.176)
From 10.194.0.176: icmp_seq=2 Redirect Host(New nexthop: 10.194.0.176)
From 10.194.0.176: icmp_seq=3 Redirect Host(New nexthop: 10.194.0.176)
From 10.194.0.176: icmp_seq=4 Redirect Host(New nexthop: 10.194.0.176)

เห็นได้ชัดว่านี่จะต้องเป็นปัญหาการกำหนดเส้นทางระหว่างสองอินสแตนซ์ VPN (ส่วนใหญ่เนื่องจากการกำหนดค่า strongswan หรือตารางการกำหนดเส้นทางอินสแตนซ์) ตั้งแต่ 10.194.0.80 โฮสต์ในเครือข่ายย่อยออริกอนจะสามารถรับการตอบสนองจากอินสแตนซ์ เส้นทางตาราง + traceroute ในอินสแตนซ์:

root@ip-10-194-0-80:~# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.194.0.1      0.0.0.0         UG        0 0          0 eth0
10.194.0.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0

root@ip-10-194-0-80:~# traceroute 10.198.0.164
traceroute to 10.198.0.164 (10.198.0.164), 30 hops max, 60 byte packets
 1  10.194.0.176 (10.194.0.176)  0.441 ms  0.425 ms  0.409 ms^C

เมื่อฉันใช้ openswan มันไม่ได้ต้องการให้ฉันทำการปรับเปลี่ยนใด ๆ ด้วยตนเองกับตารางเส้นทางของแต่ละอินสแตนซ์

นี่คือตารางเส้นทางของอินสแตนซ์ของ Oregon VPN:

root@ip-10-194-0-176:~# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.194.0.1      0.0.0.0         UG        0 0          0 eth0
10.194.0.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0

ฉันนิ่งงันเล็กน้อย

แก้ไข # 2:

ดูเหมือนว่าการกำหนดเส้นทางระหว่างอินสแตนซ์ VPN อาจไม่ใช่ปัญหา: / var / log / syslog แสดงแพ็กเก็ตที่ได้รับจากอินสแตนซ์ VPN หนึ่ง IP สาธารณะไปยังอินสแตนซ์ VPN อื่น ๆ

Jun 23 19:57:49 ip-10-194-0-176 charon: 10[NET] received packet: from 54.X.X.X[4500] to 10.194.0.176[4500] (76 bytes)

ดูเหมือนว่าเป็นปัญหาที่เกี่ยวข้องกับความปลอดภัยของเด็ก:

aws1oexternal-aws1nvexternal:   child:  10.194.0.0/16 === 10.198.0.0/16 TUNNEL, dpdaction=restart
Security Associations (1 up, 0 **connecting**):

/ var / log / syslog:

Jun 23 19:52:19 ip-10-194-0-176 charon: 02[IKE] failed to establish CHILD_SA, keeping IKE_SA
Jun 23 19:52:48 ip-10-194-0-176 charon: 11[IKE] queueing CHILD_CREATE task
Jun 23 19:52:48 ip-10-194-0-176 charon: 11[IKE]   activating CHILD_CREATE task
Jun 23 19:52:48 ip-10-194-0-176 charon: 06[IKE] establishing CHILD_SA aws1oexternal-aws1nvexternal
Jun 23 19:52:48 ip-10-194-0-176 charon: 10[IKE] received FAILED_CP_REQUIRED notify, no CHILD_SA built
Jun 23 19:52:48 ip-10-194-0-176 charon: 10[IKE] failed to establish CHILD_SA, keeping IKE_SA
Jun 23 19:52:49 ip-10-194-0-176 charon: 14[CFG] looking for a child config for 10.194.0.0/16 === 10.198.0.0/16 
Jun 23 19:52:49 ip-10-194-0-176 charon: 14[CFG] found matching child config "aws1oexternal-aws1nvexternal" with prio 10
Jun 23 19:52:49 ip-10-194-0-176 charon: 14[IKE] configuration payload negotiation failed, no CHILD_SA built
Jun 23 19:52:49 ip-10-194-0-176 charon: 14[IKE] failed to establish CHILD_SA, keeping IKE_SA

*** แก้ไข # 3: ปัญหาได้รับการแก้ไข (เอ่อเห็นจริงแก้ไข # 4 ด้านล่าง ... ) ****

แก้ไขปัญหาแล้ว

1) ฉันทำตามคำแนะนำการกำหนดค่าของไมเคิลไม่ถูกต้อง ฉันยังกำหนดค่า rightsourceip และ leftsourceip ด้วยกันซึ่งทำให้ทั้งสองอินสแตนซ์เชื่อว่าพวกเขาเป็นทั้งผู้ริเริ่ม ฉันมั่นใจว่ามีผู้ริเริ่มและอีกคนเป็นผู้ร้องขอ สิ่งนี้แก้ไขปัญหา IKE

2) ฉันพบว่าฉันต้องตั้งค่าพารามิเตอร์ esp อย่างชัดเจนด้วย แม้ว่าจะมีค่าเริ่มต้นอยู่แล้ว (aes128-sha1,3des-sha1) พารามิเตอร์ esp ยังคงต้องถูกตั้งค่าเพื่อให้อินสแตนซ์รู้ว่าจะใช้ esp OR หรืออา (แต่ไม่ใช่ทั้งคู่) ฉันลงเอยด้วยการใช้ aes128-sha1-modp2048

หวังว่าการโพสต์นี้จะช่วยให้ newbie linux ตัวต่อไปตั้งค่านี้ได้ !!

ไชโย!

แก้ไข # 4: แก้ไขปัญหา (ไม่ได้จริงๆ)

ในขณะที่การแก้ไขปัญหาแยกต่างหากที่เกี่ยวข้องกับ strongswan ฉันเปลี่ยนพารามิเตอร์ "leftfirewall" ทดสอบแล้วไม่ได้แก้ไขปัญหาแยกจากนั้นเปลี่ยนกลับเป็น orig config ล่วงหน้า (แสดงความคิดเห็นซ้าย leftfirewall) จากนั้นฉันสังเกตเห็นว่าตอนนี้ฉันไม่สามารถปิงข้ามอุโมงค์ได้ หลังจากที่บ้าไปหลายชั่วโมงเพื่อหาว่าเกิดอะไรขึ้นฉันแสดงความคิดเห็นพารามิเตอร์ esp เพื่อดูว่าจะเกิดอะไรขึ้น: ฉันสามารถปิงข้ามอุโมงค์อีกครั้ง! <- ดังนั้นมีความเป็นไปได้ที่จะมีผี ipsec วิ่งเล่นกับฉันและพารามิเตอร์ esp ไม่ใช่การแก้ไขข้อผิดพลาด TS_UNACCEPTABLE (แม้ว่าทรัพยากรอื่น ๆ ออนไลน์ระบุพารามิเตอร์ esp คือการแก้ไข ... )

แก้ไข # 5: ปัญหาได้รับการแก้ไขอย่างเต็มที่

ฉันลงเอยด้วยการย้ายทุกอย่างลงในสภาพแวดล้อมการทดสอบและเริ่มต้นจากศูนย์ ฉันติดตั้งจากซอร์สโดยใช้เวอร์ชันล่าสุด (5.3.2) แทนที่จะเป็นเวอร์ชั่นเก่ากว่าที่อยู่ใน Ubuntu repo (5.1.2) นี่เป็นการแก้ไขปัญหาที่ฉันมีด้านบนและตรวจสอบการเชื่อมต่อเลเยอร์ 7 โดยใช้ netcat (เครื่องมือที่ยอดเยี่ยม !!) ระหว่างเครือข่ายย่อยหลายแห่งผ่านอุโมงค์ VPN

นอกจากนี้: ไม่จำเป็นต้องเปิดใช้งานชื่อโฮสต์ DNS สำหรับ VPC (เนื่องจากฉันเชื่อว่าถูกต้องโดย Amazon), FYI>

หวังว่าทั้งหมดนี้จะช่วย !!!!!!

แก้ไขเพิ่มเติม 2/11/2017:

ตามคำขอของ JustEngland ให้คัดลอกการกำหนดค่าการทำงานด้านล่าง (ออกรายละเอียดบางอย่างเพื่อป้องกันการระบุตัวตนในทางใดทางหนึ่ง):

ด้าน A:

# ipsec.conf - strongSwan IPsec configuration file

# basic configuration
config setup
# Add connections here.
conn %default
 ikelifetime= You choose; must match other side
 keylife= You choose; must match other side
 rekeymargin= You choose; must match other side
 keyingtries=1
 keyexchange= You choose; must match other side
 authby=secret
 mobike=no

conn side-a
 left=10.198.0.124
 leftsubnet=10.198.0.0/16
 leftid=54.y.y.y
 leftsourceip=10.198.0.124
 right=52.x.x.x
 rightsubnet=10.194.0.0/16
 auto=start
 type=tunnel
# Add connections here.


root@x:~# cat /etc/ipsec.secrets 
A.A.A.A B.B.B.B : PSK "Your Password"

ด้าน B:

# ipsec.conf - strongSwan IPsec configuration file

# basic configuration
config setup

conn %default
 ikelifetime= You choose; must match other side
 keylife= You choose; must match other side
 rekeymargin= You choose; must match other side
 keyingtries=1
 keyexchange= You choose; must match other side
 authby=secret
 mobike=no

conn side-b
 left=10.194.0.129
 leftsubnet=10.194.0.0/16
 leftid=52.x.x.x
 right=54.y.y.y
 rightsubnet=10.198.0.0/16
 rightsourceip=10.198.0.124
 auto=start
 type=tunnel

root@x:~# cat /etc/ipsec.secrets 
B.B.B.B A.A.A.A : PSK "Your Password"

คุณช่วยโพสต์การตั้งค่าการทำงานได้ไหม
JustEngland

แน่นอนว่าจะเพิ่มการกำหนดค่าเป็นการแก้ไขในโพสต์คำถามเดิมของฉัน โปรดทราบว่าฉันไม่สามารถเข้าถึงการตั้งค่าได้อีกต่อไปดังนั้นฉันจึงไม่สามารถตรวจสอบได้ 100% หากการกำหนดค่าถูกต้อง อย่างไรก็ตามพวกเขาควรเป็น :)
lobi

คำตอบ:


7

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

left=10.10.10.10         # instance private IP of local system
leftsourceip=10.10.10.10 # instance private IP of local system
leftid=203.x.x.x         # elastic IP of local system
leftsubnet=10.x.x.x/xx

rightsubnet=10.x.x.x/xx
right=198.x.x.x          # elastic IP of remote system

สวัสดีไมเคิลปัญหานี้แก้ไขได้ แต่ตอนนี้ดูเหมือนว่ามีปัญหาการกำหนดเส้นทางที่เกิดจากการกำหนดค่าที่แข็งแกร่ง ฉันไม่สามารถ ping จากอินสแตนซ์ VPN หนึ่งไปยังอินสแตนซ์ VPN อื่น (หมดเวลา) และถ้าฉันพยายาม ping จากอินสแตนซ์อื่นจากภายในเครือข่ายย่อยฉันได้รับสิ่งต่อไปนี้: จาก 10.194.0.176: icmp_seq = 4 Redirect Host (ใหม่) nexthop: 10.194.0.176)
lobi

ฉันแก้ไขโพสต์ดั้งเดิมของฉัน
lobi

คิดออก ฉันไม่ได้ใช้การกำหนดค่าของ Michaels อย่างถูกต้อง (ฉันได้รวมเอาซอร์สโค้ดด้วยเช่นกันทำให้เกิดความสับสนว่าตัวใดตัวหนึ่งเป็นตัวเริ่มและตัวที่เป็นตัวร้องขอ) ฉันยังต้องการตั้งค่าพารามิเตอร์ esp อย่างชัดเจน
lobi

1

แก้ไขปัญหาแล้ว

1) ฉันทำตามคำแนะนำการกำหนดค่าของไมเคิลไม่ถูกต้อง ฉันยังกำหนดค่า rightsourceip และ leftsourceip ด้วยกันซึ่งทำให้ทั้งสองอินสแตนซ์เชื่อว่าพวกเขาเป็นทั้งผู้ริเริ่ม ฉันมั่นใจว่ามีผู้ริเริ่มและอีกคนเป็นผู้ร้องขอ สิ่งนี้แก้ไขปัญหา IKE

2) ฉันพบว่าฉันต้องตั้งค่าพารามิเตอร์ esp อย่างชัดเจนด้วย แม้ว่าจะมีค่าเริ่มต้นอยู่แล้ว (aes128-sha1,3des-sha1) พารามิเตอร์ esp ยังคงต้องถูกตั้งค่าเพื่อให้อินสแตนซ์รู้ว่าจะใช้ esp OR หรืออา (แต่ไม่ใช่ทั้งคู่) ฉันลงเอยด้วยการใช้ aes128-sha1-modp2048


ไม่แน่ใจว่าได้รับการแก้ไข 100% แล้วหรือไม่ ดูแก้ไข # 4 ในโพสต์ต้นฉบับ
lobi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.