Tôi cần gì để thêm bộ điều hợp IPsec ảo?


8

Tôi đang cố gắng thiết lập kết nối IPsec theo cách thủ công từ bảng điều khiển với iproute2. Thứ tôi cần là một giao diện ảo (tốt nhất là địa chỉ IP ảo cũng có thể đủ) để IPsec biến đổi mọi thứ đang xâm nhập (ESP / TUNNEL MODE) và trao nó cho eth0 (trên hệ thống của tôi có tên là em1). Mặt khác, một thiết bị ngang hàng lấy gói dữ liệu từ eth của chính nó giải mã nó và trao nó cho một giao diện ảo ở phía bên kia. Vì vậy, tôi muốn thiết lập một đường hầm IPsec "bình thường".

Tôi không gặp vấn đề gì với chính sách và SA, và việc định cấu hình thật dễ dàng bằng cách sử dụng các địa chỉ ethernet thông thường của các hệ thống trong chế độ vận chuyển, tức là

ip xfrm policy add src 198.51.100.1 dst 198.51.100.2 dir out tmpl proto esp
ip xfrm state  add src 198.51.100.1 dst 198.51.100.2 spi 24501 proto esp enc des 0xAABBCCDDEEFF0011
ip xfrm state  add src 198.51.100.2 dst 198.51.100.1 spi 24501 proto esp enc des 0xAABBCCDDEEFF0022

và một cấu hình bất lợi trên máy ngang hàng hoạt động khá tốt.

Bây giờ tôi đã cố gắng thiết lập một IP ảo và một tuyến đến hệ thống khác với

ip address add 10.0.0.0 dev em1
ip route add to 10.0.0.2 via 10.0.0.1

và một lần nữa ngược lại ở phía bên kia. Điều này một lần nữa hoạt động tốt. Sau đó, tôi đã thay đổi chính sách IPsec và SA thành

ip xfrm policy add src 10.0.0.1 dst 10.0.0.2 dir out tmpl src 198.51.100.1 dst 198.51.100.2 proto esp mode tunnel
ip xfrm state  add src 10.0.0.1 dst 10.0.0.2 spi 24501 proto esp enc des 0xAABBCCDDEEFF0011
ip xfrm state  add src 10.0.0.2 dst 10.0.0.1 spi 24501 proto esp enc des 0xAABBCCDDEEFF0022

Khi tôi cố gắng tcpingngang hàng, tôi không nhận được câu trả lời nào và setkey -PDnói với tôi rằng chính sách bảo mật không bao giờ được kích hoạt. Bây giờ tôi đang cố gắng chế tạo một giao diện ảo đang hoạt động để xử lý đường hầm IPsec, nhưng tôi không biết cách liên kết nó với giao diện vật lý và cách tôi lấy kernel để áp dụng chính sách bảo mật.

Điều quan trọng đối với tôi mà tôi có thể giải quyết việc này với iproute2, như tôi cuối cùng muốn làm ra này của một chương trình C ++ và tôi có đã các lớp học phù hợp mà thả lệnh NETLINK phong cách tương tự các iplệnh thực hiện (những gì tôi có thể làm với ip, tôi cũng có thể làm trong mã của tôi). Trên thực tế, phần đầu tiên đã hoạt động ngoài chương trình của tôi và tôi muốn sử dụng các hàm Netlink API tương tự cho phần còn lại.

Cập nhật Tôi đã tìm ra rằng trạng thái cần được thiết lập với các địa chỉ đường hầm để các SA hoạt động được

ip xfrm state  add src 10.0.0.1 dst 10.0.0.2 spi 24501 proto esp enc des 0xAABBCCDDEEFF0011
ip xfrm state  add src 10.0.0.2 dst 10.0.0.1 spi 24501 proto esp enc des 0xAABBCCDDEEFF0022

trong khi chính sách vẫn giữ nguyên. Bây giờ chính sách được kích hoạt và tôi thấy một gói được chuyển đổi trên một cổng đánh hơi. Ngoài ra iptables trên máy kia đã chặn gói và tôi đã vô hiệu hóa nó để kiểm tra.

Vì vậy, một hướng dường như làm việc bây giờ, nhưng tôi vẫn không nhận được câu trả lời. Tôi cũng không biết vấn đề là phần nào đó là phần biến đổi, phần định tuyến hay phần giao diện. Giải pháp ưa thích của tôi vẫn sẽ là một giải pháp bao gồm giao diện ảo, nhưng tôi không biết làm thế nào để liên kết nó với một giao diện vật lý, chứ đừng nói đến việc biến đổi sẽ hoạt động theo cách đó.

Câu trả lời:


1

Thông thường những gì bạn sử dụng là một đường hầm, được tạo ra bằng cách sử dụng ip tunnel add. Thiết bị đường hầm cung cấp cho bạn một thiết bị ảo đóng gói các gói IP bên trong các gói IP khác. Sau đó, gói được đóng gói có thể được mã hóa bằng IPsec.

Ví dụ: bạn có thể tạo đường hầm GRE bằng cách sử dụng:

ip tunnel add mytunnel mode gre remote 198.51.100.2
ip addr add 10.0.0.1 peer 10.0.0.2/31 dev mytunnel

Sau đó, bạn có thể định cấu hình IPSec để mã hóa các gói GRE (nói chung hoặc chỉ đến đích đó).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.