Điểm:1

Ipsec VPN tới AWS: Không thể ping kết thúc AWS bên trong đường hầm

lá cờ in

Tóm tắt: Tôi nghĩ rằng tôi đang thiếu một số tuyến trên máy chủ Ubuntu của mình khi kết nối với AWS VPN bằng Strongswan Ipsec. Bất kỳ ý tưởng những tuyến đường tôi cần trên máy chủ của tôi?

Tôi đang cố gắng thiết lập VPN được định tuyến BGP từ máy chủ đến AWS. Tôi đã làm việc này với VPN được định tuyến tĩnh, vì vậy tôi biết phía AWS và ipsec của mình là chính xác. Tuy nhiên, BGP đang tỏ ra phức tạp.

Tôi đang sử dụng Strongswan trên Ubuntu với tư cách là bên "khách hàng". Đường hầm ipsec của tôi đã hoạt động (được xác nhận bởi trạng thái ipsec và trong bảng điều khiển AWS). Vấn đề dường như là máy khách BGP của tôi (frr) không thể kết nối với quy trình BGP trong AWS (và ngược lại).

Lấy một trong hai đường hầm, ip một trông như thế này:

5: tunnel1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1419 qdisc trạng thái noqueue nhóm UNKNOWN mặc định qlen 1000
    liên kết/ipip 1.2.3.4 ngang hàng 2.3.4.5
    inet 169.254.10.146 ngang hàng 169.254.10.145/30 phạm vi đường hầm toàn cầu1
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi

Giao diện được tạo bằng một tập lệnh do Strongswan gọi, có dạng như sau:

đường hầm ip thêm khóa vti ${VTI_INTERFACE} cục bộ ${PLUTO_ME} từ xa chế độ ${PLUTO_PEER} ${PLUTO_MARK_IN_ARR[0]}
sysctl -w net.ipv4.conf.${VTI_INTERFACE}.disable_policy=1
sysctl -w net.ipv4.conf.${VTI_INTERFACE}.rp_filter=2 || sysctl -w net.ipv4.conf.${VTI_INTERFACE}.rp_filter=0
địa chỉ ip thêm ${VTI_LOCALADDR} điều khiển từ xa ${VTI_REMOTEADDR} nhà phát triển ${VTI_INTERFACE}
thiết lập liên kết ip ${VTI_INTERFACE} lên mtu ${MTU}
iptables -t mangle -I FORWARD -o ${VTI_INTERFACE} -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -I INPUT -p esp -s ${PLUTO_PEER} -d ${PLUTO_ME} -j MARK --set-xmark ${PLUTO_MARK_IN}

Tôi có một lộ trình như thế này:

169.254.10.144/30 dev tunnel1 liên kết phạm vi kernel proto src 169.254.10.146

Tôi có thể ping đầu cục bộ (khách hàng) của mình (169.254.10.146), nhưng ping đầu từ xa cho biết:

PING 169.254.10.145 (169.254.10.145) 56(84) byte dữ liệu.
Từ 169.254.10.146 icmp_seq=1 Máy chủ đích không thể truy cập

Mặc dù nói rằng không thể truy cập được, nhưng tôi thấy một gói trên giao diện đường hầm, mặc dù có vẻ như gói này thực sự không được gửi xuống đường hầm tới AWS (ít nhất, số liệu thống kê AWS Cloudwatch không hiển thị hoạt động bổ sung).

Một trong các bước gỡ lỗi BGP là cố gắng 'telnet' tới hàng xóm (169.254.10.145) trên cổng 179 - nhưng điều này không thành công với "không có tuyến đến máy chủ". Tuy nhiên, thật kỳ lạ là tôi có thể thấy AWS đang cố gắng kết nối với máy khách BGP của mình trong tcpdump trên giao diện đường hầm:

12:49:45.860899 IP 169.254.10.145.43731 > 169.254.10.146.179: Flags [S], seq 857645259, win 26880, tùy chọn [mss 1375,sackOK,TS val 3261400514 ecr 0,nop, wscale 0 7]
12: 49: 45.860931 IP 169.254.10.146.179> 169.254.10.145.43731: Cờ [S.], SEQ 2284055933, ACK 857645260, WIN 64249, ], chiều dài 0

Có vẻ như máy chủ của tôi đang trả về gói ACK, nhưng kết nối chưa bao giờ được thiết lập. Nếu tôi dừng dịch vụ BGP, chúng tôi sẽ bắt đầu gửi phản hồi RST:

12:52:02.055473 IP 169.254.10.145.43679 > 169.254.10.146.179: Flags [S], seq 2280717367, win 26880, tùy chọn [mss 1375,sackOK,TS val 3261536708 ecr 0,nop, w0 7]
12:52:02.055498 IP 169.254.10.146.179 > 169.254.10.145.43679: Flags [R.], seq 0, ack 1, thắng 0, độ dài 0

Từ đó, tôi đoán rằng gói ACK của kernel và gói ping của tôi đang đi vào giao diện đường hầm, nhưng không thực sự vào được ipsec hoặc đến AWS.

Sau đó, có vẻ như tôi cần thêm một số tuyến đường bổ sung, nhưng tôi không thể tìm ra những gì có thể được yêu cầu. Cảm giác như tôi đã có mọi thứ tại chỗ rồi. Tôi đã xem vô số ví dụ và hướng dẫn, nhưng ít ví dụ hiển thị bất cứ điều gì tôi không có, và thậm chí còn ít hơn nữa xác nhận rằng tôi cần các tuyến đường mà tôi nghĩ là tôi cần hoặc những tuyến đường nào cần thiết để BGP hoạt động. Bất kỳ trợ giúp nhiều đánh giá cao.

Điểm:0
lá cờ in

Hóa ra giải pháp là một chính sách xfrm bổ sung. Suy nghĩ đằng sau nó là trong khi các gói đang đi vào giao diện, lưu lượng sẽ không bị ipsec "lấy đi". Để giải quyết vấn đề, có vẻ như chúng ta cần đánh dấu các gói (giống như cách chúng ta làm trong cấu hình ipsec và iptables), đồng thời "kích hoạt" xfrm cụ thể theo chính sách. Trong trường hợp của tôi, nó là thế này:

ip chính sách xfrm add dst 169.254.10.144/30 src 169.254.10.144/30 dir out tmpl src 1.2.3.4 dst 2.3.4.5 proto esp spi 0xc0f93fba reqid 1 chế độ đánh dấu đường hầm 0x64

Điều này làm cho một chính sách trông như thế này:

src 169.254.10.144/30 ngày 169.254.10.144/30
    dir ra ưu tiên 0
    đánh dấu 0x64/0xffffffff
    tmpl src 1.2.3.4 dst 2.3.4.5
        proto esp spi 0xc0f93fba yêu cầu đường hầm 1 chế độ

Điều này chứa đựng một số điều kỳ diệu, mà có vẻ như chúng ta phải lấy từ chính sách hiện có. Điều đầu tiên là "số spi". Điều này được thiết lập bởi Strongswan và tôi không nghĩ là có thể dự đoán được cũng như không có sẵn trong môi trường được chuyển đến ipsec-vti.sh. Thay vào đó, bạn sẽ cần thực hiện một số lệnh grep và awk để rút nó ra khỏi chính sách ip xfrm đầu ra. Tương tự như vậy trả lại - tập hợp này với 1 cho giao diện đầu tiên và 2 cho giao diện thứ hai được tạo - thật đáng buồn, đường hầm 1 không phải lúc nào cũng là đường đầu tiên, vì vậy bạn cũng cần phải rút số đó ra.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.