Điểm:0

Định tuyến lưu lượng qua đường hầm IPSec với máy chủ cổng

lá cờ pk

Cân nhắc việc wiki thiên nga, đây có vẻ là một vấn đề tiêu chuẩn, nhưng tôi không thể làm cho nó hoạt động bình thường.

Bố cục mạng

bố trí mạng

Trang web địa phương (khách hàngcổng vào) nằm dưới sự kiểm soát của tôi, trang web từ xa (cổng từ xamáy chủ từ xa) không phải. Đường hầm IPSec là một chia đường hầm sao cho chỉ yêu cầu đến 10.10.0.0/16 mạng con được gửi qua đường hầm IPSec.

Ghi bàn

Tôi muốn khách hàng để giao tiếp với máy chủ từ xa, ví dụ. tạo một ssh hoặc một smb sự liên quan.

Những gì tôi đã làm

  • Tôi đã thiết lập một đường hầm IPSec giữa cổng vàocổng từ xa.

  • Tôi đã bật chuyển tiếp ip trên cổng vào:

    sysctl net.ipv4.ip_forward=1
    
  • Tôi đã tạo một NAT trên cổng vào:

    iptables -t nat -I POSTROUTING -m policy --pol ipsec --dir out -j CHẤP NHẬN
    iptables -t nat -A POSTROUTING -j MASQUERADE
    
  • trên khách hàng Tôi đã định tuyến lưu lượng truy cập thông qua cổng vào:

    tuyến đường ip mặc định
    tuyến ip thêm mặc định qua 192.168.144.4
                           # 192.168.144.4 là cổng
    

làm việc gì

  • Đường hầm IPSec được thiết lập và ổn định.
  • Khi đăng nhập vào cổng vào, Tôi có thể ping các cổng từ xamáy chủ từ xa thành công. tôi cũng có thể ping các khách hàng. Và tôi có thể truy cập google.com.
  • Khi đăng nhập vào khách hàng, Tôi có thể truy cập google.com và tôi có thể ping các cổng vào. Với tcpdump icmp trên cổng vào tôi thấy rằng truy cập google.com từ khách hàng đang trải qua cổng vào.

Những gì không hoạt động, chưa

Tôi không thể ping các máy chủ từ xa từ khách hàng bằng IP của nó.

client$ ping -c 1 10.10.12.7
PING 10.10.12.7 (10.10.12.7): 56 byte dữ liệu

--- 10.10.12.7 thống kê ping ---
Truyền 1 gói, nhận 0 gói, mất gói 100%

Từ tcpdump trên cổng vào, có vẻ như ping được gửi, nhưng không được chuyển tiếp qua đường hầm:

cổng $ tcpdump icmp
13:19:18.122999 IP 192.168.144.7 > 10.10.12.7: ICMP echo request, id 15, seq 0, độ dài 64
13:19:18.123038 Cổng IP > 10.10.12.7: Yêu cầu tiếng vang ICMP, id 15, seq 0, độ dài 64
13:19:18.127534 IP ac5.nue3.m-online.net > cổng: ICMP net 10.10.12.7 không truy cập được, độ dài 36
13:19:18.127556 ​​IP ac5.nue3.m-online.net > 192.168.144.7: ICMP net 10.10.12.7 không truy cập được, độ dài 36

Như ac5.nue3.m-online.net là nhà cung cấp dịch vụ internet của trang web cục bộ, tôi nghĩ rằng gói không được định tuyến qua đường hầm IPSec mà thông qua kết nối internet của cổng vào, mà, tất nhiên, không thể đạt được máy chủ từ xa. (Nếu tôi biến đường hầm IPSec thành đường hầm đầy đủ thay vì đường hầm phân tách, tôi sẽ nhận được kết quả tương tự.)

Bất kỳ trợ giúp hoặc thông tin chi tiết nào sẽ thực sự được đánh giá cao!

CHỈNH SỬA: trạng thái ipsec trên cổng vào

cổng> trạng thái ipsec
Trạng thái của daemon IKE charon (strongSwan 5.8.2, Linux 5.4.0-88-generic, x86_64):
  thời gian hoạt động: 7 phút, kể từ ngày 08 tháng 10 08:18:24 2021
  malloc: sbrk 3112960, mmap 0, đã sử dụng 1081456, miễn phí 2031504
  chủ đề công nhân: 11 trên 16 nhàn rỗi, 5/0/0/0 đang hoạt động, hàng đợi công việc: 0/0/0/0, đã lên lịch: 4
  plugin đã tải: charon test-vectors ldap pkcs11 tpm aesni aes rc2 sha2 sha1 md5 mgf1 rdrand nonce ngẫu nhiên x509 ràng buộc thu hồi pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl gcrypt af-alg fips-prf gmp curve25519 agent chapoly xcbc cmac ghmac ctr ntru drbg curl attr kernel-netlink giải quyết socket-default 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- chung xauth-eap xauth-pam tnc-tnccs dhcp lookip error-notify certexpire led addrblock unity counters
Địa chỉ IP nghe:
  192.168.144.4
kết nối:
ví dụ-ipsec: %any...vpn1.example.com IKEv2, dpddelay=300s
example-ipsec: local: [[email protected]] sử dụng xác thực khóa chia sẻ trước
example-ipsec: remote: [[email protected]] sử dụng xác thực khóa chia sẻ trước
ví dụ-ipsec: con: động === 0.0.0.0/0 TUNNEL, dpdaction=clear
Hiệp hội bảo mật (1 lên, 0 kết nối):
example-ipsec[1]: ĐƯỢC THÀNH LẬP 7 phút trước, 192.168.144.4[[email protected]]...<public-ip-of-the-remote-gateway>[[email protected]]
ví dụ-ipsec[1]: I: 9d7c74f670bbda86_i* c12b3b4a236b7018_r, xác thực lại khóa chia sẻ trước sau 2 giờ
ví dụ-ipsec[1]: Đề xuất IKE: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
ví dụ-ipsec{1}: ĐÃ CÀI ĐẶT, TUNNEL, yêu cầu 1, ESP trong SPI UDP: cf66ad72_i af3c9348_o
ví dụ-ipsec{1}: AES_CBC_256/HMAC_SHA2_256_128, 442 byte_i (4 gói, 434 giây trước), 485 byte_o (6 gói, 433 giây trước), nhập lại khóa sau 38 phút
ví dụ-ipsec{1}: 10.10.102.235/32 === 0.0.0.0/0

Đây là đầu ra của trạng thái ipsec trên cổng vào sau khi gửi không thành công ping từ khách hàng đến máy chủ từ xa. Các ping từ cổng vào không thay đổi "byte" trong đầu ra. Các "byte" trong đầu ra tương ứng với một ping tôi đã gửi từ cổng vào đến máy chủ từ xa.

CHỈNH SỬA: /etc/ipsec.conf trên cổng vào:

# /etc/ipsec.conf

kết nối ví dụ-ipsec
  left = %defaultroute
  leftsourceip = %config
  leftid = "[email protected]"
  đúng = vpn1.example.com
  rightid = "[email protected]"
  mạng con bên phải = 0.0.0.0/0
  tường lửa trái = có
  chính sách cài đặt = có
  trao đổi khóa = ikev2
  loại = đường hầm
  tự động = bắt đầu
  xác thực trái = psk
  quyền xác thực = psk
  dpdaction = rõ ràng
  dpddelay = 300s
lá cờ cn
Bộ chọn lưu lượng truy cập cục bộ đã thương lượng cho `gateway` là gì? (tức là đăng đầu ra trạng thái của StrongSwan, `ipsec statusall` hoặc `swanctl -l`)
lá cờ pk
Cảm ơn @ecdsa, tôi đã đăng đầu ra của `ipsec statusall`.
lá cờ pk
Ồ, tôi nghĩ bạn có thể đang làm gì đó! Nếu dòng cuối cùng của đầu ra `ipsec statusall` cũng là một bộ chọn lưu lượng, nó có thể không khớp với NAT của tôi. Nhưng trên thực tế, tôi không biết phạm vi `10.10.102.235/32` này đến từ đâu, bởi vì nó không phải từ cấu hình của riêng tôi. Có thể, đây là một bộ chọn do cổng từ xa áp đặt:/
lá cờ pk
Vậy đó @ecdsa, tôi đã thêm `iptables -t nat -A POSTROUTING -j SNAT --to-source 10.10.102.235; iptables -t nat -A POSTROUTING -m policy --dir out --pol ipsec -j ACCEPT` (được thông qua từ https://wiki.strongswan.org/issues/2355) và sau đó nó hoạt động! Bạn có quan tâm để viết một câu trả lời thích hợp?
drookie avatar
lá cờ za
Có vẻ như bạn thực sự đã định cấu hình sai bộ chọn lưu lượng truy cập. Thêm một số cấu hình liên quan đến điều này.
lá cờ pk
Cảm ơn bạn, @droookie, tôi đã thêm `/etc/ipsec.conf` của mình.
Điểm:1
lá cờ cn

Vì kết nối sử dụng địa chỉ IP ảo (leftsourceip=%config, dẫn đến 10.10.102.235/32 là bộ chọn lưu lượng truy cập cục bộ), bạn phải NAT lưu lượng truy cập đến địa chỉ đó, không phải địa chỉ vật lý của máy chủ lưu trữ mà bạn nhận được qua MẶT NẠ, để phù hợp với các chính sách IPsec và tạo đường hầm cho lưu lượng truy cập (-TÔI để chèn nó ở trên cùng):

iptables -t nat -I POSTROUTING -j SNAT --to-source 10.10.102.235

Nếu IP ảo không được gán tĩnh (ví dụ:dựa trên danh tính của khách hàng) và có thể thay đổi, bạn có thể tự động cài đặt/xóa quy tắc SNAT trong một tập lệnh updown tùy chỉnh (cấu hình thông qua trái lên xuống) mà IP ảo được truyền vào $PLUTO_MY_SOURCEIP.

Như ban đầu bạn đã nói rằng đây là một thiết lập đường hầm phân chia (mà bộ chọn lưu lượng truy cập từ xa của 0.0.0.0/0 không thực sự phản ánh), bạn cũng có thể thêm ví dụ: -d 10.10.0.0/16 theo quy tắc SNAT để chỉ xử lý các gói đến mạng con đó, lưu lượng truy cập khác sẽ không được định tuyến và tạo đường hầm (bạn có thể giữ nguyên MẶT NẠ quy tắc cho lưu lượng truy cập đó). Điều này cũng có thể được thi hành thông qua chính sách IPsec (rightsubnet=10.10.0.0/16), mà sau đó bạn nhận được trong $PLUTO_PEER_CLIENT trong tập lệnh updown.

lá cờ pk
Cảm ơn bạn rất nhiều vì đã giúp đỡ và cho câu trả lời tuyệt vời này, nó không chỉ cho biết phải làm gì mà còn cho biết lý do tại sao một người cần phải làm điều đó!

Đă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.