Điểm:1

StrongSwan swanctl/xfrm: Làm thế nào để giả mạo lưu lượng truy cập đường hầm?

lá cờ cn
  • Ubuntu 20.04LTS
  • StrongSwan Swanctl 5.8.2
  • Linux 5.8.0-1035-gcp

Tôi đang cố gắng thiết lập VPN "chiến binh đường bộ" IKEv2 để trì hoãn xác thực bán kính cho máy chủ ngược dòng của chúng tôi. Tin tốt là, tôi có thể yêu cầu khách hàng kết nối và vượt qua RADIUS auth. Nhưng, tôi đã thử khoảng một triệu thứ, nhưng tôi không thể nhận gói tin để chuyển tiếp. Tôi thấy lưu lượng truy cập đến trong đường hầm, nhưng nó sẽ không NAT ra bên ngoài. Lưu ý rằng những nỗ lực của tôi trong tập lệnh updown để cố gắng NAT lưu lượng truy cập không có kết quả (hiện đã được nhận xét).

Đây là cấu hình:

sudo tee /etc/strongswan.d/charon-systemd.conf << "EOF"
charon-systemd {
# cài đặt_ảo_ip=không
# cài đặt_tuyến=0
  load=random nonce aes sha1 sha2 hmac pem pkcs1 x509 thu hồi đường cong25519 gmp curl kernel-netlink socket-default updown vici eap-radius eap-identity
  tạp chí {
   # Loglevel cho một hệ thống con cụ thể.
   # <hệ thống con> = <mặc định>
   # Cấp nhật ký mặc định.
   mặc định = 2
   enc=1
   asn=1
  }

  bổ sung {
    eap-bán kính {
      may chủ {
        sơ cấp {
          địa chỉ=10.128.0.13
          bí mật=siêu bí mật
          auth_port=21812
        }
      }
    }
  }
}
EOF

sudo tee /etc/swanctl/conf.d/vpn.conf << "EOF"
kết nối {
  rw-eap {
    phiên bản = 2
    đề xuất=aes128gcm16-sha256-modp2048
    local_addrs=10.128.0.14
    send_cert=luôn luôn
    pool=dhcp_ipv4
    địa phương {
      auth=pubkey
      certs=vpn.pem
      id=vpn.xxx.com
    }
    Xa xôi {
      auth=eap-bán kính
      id=*
    }
    bọn trẻ {
      bọc lưới {
        local_ts=0.0.0.0/0
        remote_ts=172.16.20.64/26
        if_id_in=%duy nhất
        if_id_out=%duy nhất
        mark_in=%duy nhất
        mark_out=%duy nhất
        updown=/usr/local/bin/rw-updown.sh
        esp_proposals=aes128gcm16-sha256-modp2048
      }
    }
  }
}
bể bơi {
  dhcp_ipv4 {
    addrs=172.16.20.64/26
    dns=10.128.0.9
  }
}
EOF

tee /usr/local/bin/rw-updown.sh << "EOF"
#!/bin/bash

set -o danh từ
đặt -o errexit

XFRM_IF="xfrm${PLUTO_UNIQUEID}"

trường hợp "${PLUTO_VERB}" trong
    khách hàng lên)
        logger -t "vpn rw-updown" ${PLUTO_VERB} ${PLUTO_UNIQUEID} ${XFRM_IF} ${PLUTO_ME} ${PLUTO_PEER} ${PLUTO_MARK_OUT%%/*} ${PLUTO_PEER_SOURCEIP}
        liên kết ip thêm ${XFRM_IF} loại xfrm dev ens4 if_id ${PLUTO_UNIQUEID}
        thiết lập liên kết ip ${XFRM_IF}
# iptables -A FORWARD --in-interface ${XFRM_IF} -j CHẤP NHẬN
# iptables --table nat -A POSTROUTING --out-interface ens4 -j MASQUERADE
        ;;
    khách hàng xuống)
# iptables -D FORWARD --in-interface ${XFRM_IF} -j CHẤP NHẬN
# iptables --table nat -D POSTROUTING --out-interface ens4 -j MASQUERADE
        liên kết ip từ ${XFRM_IF}
        ;;
thoát hiểm
EOF
chmod +x /usr/local/bin/rw-updown.sh

Vì vậy, sau khi máy khách kết nối, chúng ta sẽ thấy giao diện được tạo:

root@vpn-iowa:~# chính sách ip xfrm 
src 0.0.0.0/0 dst 172.16.20.64/26 
    dir out ưu tiên 386687 
    đánh dấu 0x2/0xffffffff 
    tmpl src 10.128.0.14 dst 173.197.16.118
        proto esp spi 0x08547b23 yêu cầu đường hầm 2 chế độ
    if_id 0x2
src 172.16.20.64/26 dst 0.0.0.0/0 
    dir fwd ưu tiên 386687 
    đánh dấu 0x2/0xffffffff 
    tmpl src 173.197.16.118 dst 10.128.0.14
        đường hầm chế độ proto esp reqid 2
    if_id 0x2
src 172.16.20.64/26 dst 0.0.0.0/0 
    thư mục ưu tiên 386687 
    đánh dấu 0x2/0xffffffff 
    tmpl src 173.197.16.118 dst 10.128.0.14
        đường hầm chế độ proto esp reqid 2
    if_id 0x2
src 0.0.0.0/0 dst 0.0.0.0/0 
    ổ cắm ở mức ưu tiên 0 
src 0.0.0.0/0 dst 0.0.0.0/0 
    ưu tiên ổ cắm 0 
src 0.0.0.0/0 dst 0.0.0.0/0 
    ổ cắm ở mức ưu tiên 0

... hơn

Và chạy ổn định ping 1.1.1.1 trên máy khách khiến lưu lượng truy cập đến gói RX 246:

root@vpn-iowa:~# ifconfig
ens4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1460
        inet 10.128.0.14 netmask 255.255.255.255 phát sóng 0.0.0.0
        inet6 fe80::4001:aff:fe80:e tiền tốlen 64 phạm vi 0x20<link>
        ether 42:01:0a:80:00:0e txqueuelen 1000 (Ethernet)
        Gói RX 2668 byte 444824 (444,8 KB)
        Lỗi RX 0 bị rớt 0 tràn 0 khung hình 0
        Gói TX 1907 byte 586712 (586,7 KB)
        Lỗi TX 0 bị rớt 0 tràn 0 sóng mang 0 va chạm 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
        inet 127.0.0.1 mặt nạ mạng 255.0.0.0
        inet6 ::1 tiền tốlen 128 phạm vi 0x10<máy chủ>
        vòng lặp txqueuelen 1000 (Local Loopback)
        Gói RX 140 byte 13208 (13,2 KB)
        Lỗi RX 0 bị rớt 0 tràn 0 khung hình 0
        Gói TX 140 byte 13208 (13,2 KB)
        Lỗi TX 0 bị rớt 0 tràn 0 sóng mang 0 va chạm 0

xfrm2: flags=193<LÊN,CHẠY,NOARP> mtu 1500
        inet6 fe80::85d9:2aa5:841:803f tiền tốlen 64 phạm vi 0x20<link>
        không xác định 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
        Gói RX 246 byte 18819 (18,8 KB)
        Lỗi RX 0 bị rớt 0 tràn 0 khung hình 0
        Gói TX 0 byte 0 (0,0 B)
        Lỗi TX 0 bị rớt 0 tràn 0 sóng mang 0 va chạm 0

Tôi sẽ mãi mãi mắc nợ bạn nếu bạn có thể giúp tôi việc này.Tôi đã đọc một triệu tài nguyên và vẫn không thể tìm ra điều này. Cảm ơn bạn!

lá cờ cn
Tại sao bạn lại chỉ định ID giao diện VÀ nhãn hiệu? (Cái sau thực sự yêu cầu đánh dấu lưu lượng theo cách thủ công.) Bạn đã đọc trang trên [VPN dựa trên tuyến đường](https://wiki.strongswan.org/projects/strongswan/wiki/RouteBasedVPN) trên wiki StrongSwan chưa? Và về việc chuyển tiếp, bạn đã đọc [trang wiki này](https://wiki.strongswan.org/projects/strongswan/wiki/ForwardingAndSplitTunneling) chưa?
Jonathan S. Fisher avatar
lá cờ cn
Đầu tiên xin cảm ơn bạn đã dành thời gian trả lời :) Các điểm còn sót lại khi tôi cố gắng sử dụng vti thay vì xfrm. Tôi có thể loại bỏ chúng, nhưng nó không tạo ra sự khác biệt. Tôi đã đọc cả hai trang. Tôi đã bật Chuyển tiếp IP trong sysctl. Tôi đã thử cả dựa trên tuyến đường và dựa trên chính sách và tôi không thể làm việc được. Tôi muốn có VPN dựa trên tuyến đường hơn, nhưng tại thời điểm này, tôi chỉ cần _anything_ để hoạt động
lá cờ cn
Chắc chắn loại bỏ các dấu hiệu. Bạn sẽ cần một NAT (không cần cài đặt nó trong tập lệnh updown, đặc biệt nếu bạn mong đợi nhiều máy khách). Bạn cũng cần một tuyến đến IP ảo của máy khách thông qua giao diện XFRM (kiểm tra tập lệnh ví dụ VTI trên trang đầu tiên tôi đã liên kết ở trên, bạn có thể thực hiện việc này tương tự cho các giao diện XFRM). Tuy nhiên, bạn cũng có thể chỉ sử dụng một giao diện và tuyến đường duy nhất (cho toàn bộ mạng con `172.16.20.64/26`) và loại bỏ tập lệnh updown (định cấu hình ID giao diện tĩnh trong cấu hình thay vì `%unique`).
Jonathan S. Fisher avatar
lá cờ cn
tuyệt vời, cảm ơn bạn

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