Tôi có một máy chủ truy cập từ xa StrongSwan IPSec chạy trên RHEL và một máy khách trên cùng một mạng cục bộ. Tôi có một máy chủ Samba chạy trên cùng một máy chủ RHEL mà tôi muốn có sẵn thông qua VPN nhưng không phải bên ngoài đường hầm. Tôi có thể thiết lập thành công đường hầm IPSec (phải tạo một cấu hình MacOS với Apple Configurator2 bật Perfect Forward Security để có một ciphersuite phù hợp) nhưng tôi không thể định tuyến lưu lượng truy cập trong máy chủ đúng cách.Tôi đã chụp một gói và tôi có thể thấy các gói ESP gửi đến và giải mã ICMP từ lệnh ping từ máy khách nhưng máy chủ không thể trả lời lại. Tôi đã dành vài ngày cuối tuần để cố gắng tìm ra quy tắc iptables nào mà tôi cần để kết nối nhưng tôi nghĩ rằng mình đang thiếu hiểu biết nào đó. Tôi đã có thể thiết lập VPN OpenVPN và WireGuard mà không gặp vấn đề gì với các giao diện điều chỉnh nhưng IPSec theo hiểu biết của tôi được giải mã theo chính sách trong nhân nên tôi không quen với việc điều đó sẽ ảnh hưởng đến việc định tuyến như thế nào.
Tôi đã thiết lập dựa trên tài liệu ví dụ StrongSwan chính thức cho Truy cập từ xa, đã sử dụng cái này tài liệu cấu hình Swanctl, đọc các bài đăng trên diễn đàn và dịch định dạng cũ hơn sang định dạng mới hơn với cái này - cũng như đọc về chuyển tiếp và VPN dựa trên tuyến đường - nhưng tôi nghĩ rằng tôi chỉ thiếu hiểu biết cấp cao về cách các tuyến lưu lượng truy cập trong máy chủ VPN.
Sơ đồ mạng logic
Sơ đồ mạng logic
swanctl.conf (với những thứ khác đã nhận xét mà tôi đã thử)
kết nối {
ikev2-vpn {
phân mảnh = có
rekey_time=0s
#xe máy = không
phiên bản = 2
đề xuất=aes256gcm16-prfsha384-ecp384
remote_addrs=%any
local_addrs=192.168.1.15
#vips=10.0.3.1
#remote_addrs=192.168.1.23
#pools=10.0.3.0/24
#encap=có
#dpd_delay=300s
pool=pool1,pool2
#if_id_in=6
#if_id_out=6
bọn trẻ {
ikev2-vpn {
#start_action=không
esp_proposals=aes256gcm16-prfsha384-ecp384
#local_ts=10.0.3.1/32
local_ts=10.0.1.0/24
remote_ts=10.0.2.0/24
#remote_ts=10.0.3.10-10.0.3.200
#dpd_action=xóa
updown=/usr/libexec/strongswan/_updown iptables
}
}
địa phương {
auth=ecdsa-384-sha384
chứng chỉ = /etc/strongswan/ipsec.d/certs/server.crt
id = 192.168.1.15
}
Xa xôi {
auth=ecdsa-384-sha384
id =% bất kỳ
}
}
}
bể bơi {
nhóm1 {
#addrs=10.0.3.0/24
addrs=10.0.1.0/24
}
nhóm2 {
#addrs=10.0.3.10-10.0.3.200
addrs=10.0.2.0/24
}
}
bí mật {
máy chủ ecdsa {
tập tin=/etc/strongswan/ipsec.d/private/server.key
}
ecdsa-client {
tập tin=/etc/strongswan/ipsec.d/private/client.key
}
}
chính quyền {
cơ quan chứng nhận {
cacert = /etc/strongswan/ipsec.d/cacerts/ca.crt
}
}
Swanctl --list-sas
ikev2-vpn: #2, ĐÃ THÀNH LẬP, IKEv2, c98d6dc49ca0acd4_i 85342c9a0809e294_r*
cục bộ '192.168.1.15' @ 192.168.1.15[4500]
'client2.vpn' từ xa @ 192.168.1.23[4500] [10.0.1.1]
AES_GCM_16-256/PRF_HMAC_SHA2_384/ECP_384
thành lập 53s trước
ikev2-vpn: #4, yêu cầu 1, ĐÃ CÀI ĐẶT, ĐƯỜNG Hầm, ESP:AES_GCM_16-256
đã cài đặt 53s trước, nhập lại trong 3247s, hết hạn sau 3907s
trong c334ea0b, 0 byte, 0 gói
ra 021348d4, 0 byte, 0 gói
cục bộ 10.0.1.0/24
điều khiển từ xa 10.0.2.0/24
Swanctl --list-conns
ikev2-vpn: IKEv2, không cần xác thực lại, không cần nhập lại khóa
cục bộ: 192.168.1.15
điều khiển từ xa: % bất kỳ
xác thực khóa công khai cục bộ:
id: 192.168.1.15
chứng chỉ: [CERT_DN]
xác thực khóa công khai từ xa:
id: % bất kỳ
ikev2-vpn: TUNNEL, nhập lại khóa sau mỗi 3600 giây
địa phương: 10.0.1.0/24
từ xa: 10.0.2.0/24
trạng thái ip -s xfrm
src 192.168.1.15 dst 192.168.1.23
đường hầm chế độ proto esp spi 0x021348d4(34818260) reqid 1(0x00000001)
cửa sổ phát lại 0 seq 0x00000000 cờ af-unspec (0x00100000)
aead rfc4106(gcm(aes)) [KEY] (288 bit) 128
bối cảnh chống phát lại: seq 0x0, oseq 0x0, bitmap 0x00000000
cấu hình trọn đời:
giới hạn: mềm (INF)(byte), cứng (INF)(byte)
giới hạn: mềm (INF)(gói), cứng (INF)(gói)
hết hạn thêm: mềm 3418(giây), cứng 3960(giây)
hết hạn sử dụng: mềm 0(giây), cứng 0(giây)
trọn đời hiện tại:
0(byte), 0(gói tin)
thêm [TIME] sử dụng -
số liệu thống kê:
cửa sổ phát lại 0 phát lại 0 thất bại 0
src 192.168.1.23 dst 192.168.1.15
đường hầm chế độ proto esp spi 0xc334ea0b(3275024907) reqid 1(0x00000001)
cửa sổ phát lại 32 cờ seq 0x00000000 af-unspec (0x00100000)
aead rfc4106(gcm(aes)) [KEY] (288 bit) 128
bối cảnh chống phát lại: seq 0xc, oseq 0x0, bitmap 0x00000fff
cấu hình trọn đời:
giới hạn: mềm (INF)(byte), cứng (INF)(byte)
giới hạn: mềm (INF)(gói), cứng (INF)(gói)
hết hạn thêm: mềm 3300(giây), cứng 3960(giây)
hết hạn sử dụng: mềm 0(giây), cứng 0(giây)
trọn đời hiện tại:
1008(byte), 12(gói)
thêm [TIME] sử dụng [TIME]
số liệu thống kê:
cửa sổ phát lại 0 phát lại 0 thất bại 0
chính sách ip xfrm hiển thị
src 10.0.1.0/24 dst 10.0.2.0/24
dir out priority 375423 ptype chính
tmpl src 192.168.1.15 dst 192.168.1.23
proto esp spi 0x021348d4 yêu cầu đường hầm 1 chế độ
src 10.0.2.0/24 dst 10.0.1.0/24
ưu tiên dir fwd 375423 ptype chính
tmpl src 192.168.1.23 dst 192.168.1.15
đường hầm chế độ proto esp reqid 1
src 10.0.2.0/24 dst 10.0.1.0/24
thư mục ưu tiên 375423 ptype chính
tmpl src 192.168.1.23 dst 192.168.1.15
đường hầm chế độ proto esp reqid 1
src 0.0.0.0/0 dst 0.0.0.0/0
ổ cắm ưu tiên 0 ptype chính
src 0.0.0.0/0 dst 0.0.0.0/0
ổ cắm ra ưu tiên 0 ptype chính
src 0.0.0.0/0 dst 0.0.0.0/0
ổ cắm ưu tiên 0 ptype chính
src 0.0.0.0/0 dst 0.0.0.0/0
ổ cắm ra ưu tiên 0 ptype chính
src ::/0 dst ::/0
ổ cắm ưu tiên 0 ptype chính
src ::/0 dst ::/0
ổ cắm ra ưu tiên 0 ptype chính
src ::/0 dst ::/0
ổ cắm ưu tiên 0 ptype chính
src ::/0 dst ::/0
ổ cắm ra ưu tiên 0 ptype chính
iptables-save
# Được tạo bởi iptables-save v1.8.4
*Bảo vệ
:INPUT CHẤP NHẬN [22858074:106762962340]
:CHẤP NHẬN TRƯỚC [7:588]
:CHẤP NHẬN ĐẦU RA [13832427:3964756363]
LÀM
# Được tạo bởi iptables-save v1.8.4
* nguyên
: CHẤP NHẬN TRƯỚC [22858911:106763119967]
:CHẤP NHẬN ĐẦU RA [13832428:3964756655]
LÀM
# Được tạo bởi iptables-save v1.8.4
* mangle
: CHẤP NHẬN TRƯỚC [22858911:106763119967]
:CHẤP NHẬN ĐẦU VÀO [22858308:106763007491]
:CHẤP NHẬN TRƯỚC [7:588]
:CHẤP NHẬN ĐẦU RA [13832428:3964756655]
:CHẤP NHẬN SAU ĐÓ [13833383:3964877586]
:LIBVIRT_PRT - [0:0]
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -o virbr0 -p udp -m udp --dport 68 -j KIỂM TRA --checksum-fill
LÀM
# Được tạo bởi iptables-save v1.8.4
*tự nhiên
:CHẤP NHẬN TRƯỚC [186346:34394324]
:CHẤP NHẬN ĐẦU VÀO [185651:34259782]
:CHẤP NHẬN SAU ĐÓ [16086:1727773]
:CHẤP NHẬN ĐẦU RA [16085:1727689]
:LIBVIRT_PRT - [0:0]
-A POSTROUTING -j LIBVIRT_PRT
-A POSTROUTING -s 172.16.0.0/24 -o enp0s31f6 -j MASQUERADE
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j TRẢ LẠI
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j TRẢ LẠI
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MẶT MẠO
LÀM
# Được tạo bởi iptables-save
*lọc
:CHẤP NHẬN ĐẦU VÀO [22831621:106727043679]
:CHẤP NHẬN TRƯỚC [0:0]
:CHẤP NHẬN ĐẦU RA [13832420:3964757167]
:LIBVIRT_INP - [0:0]
:LIBVIRT_OUT - [0:0]
:LIBVIRT_FWO - [0:0]
:LIBVIRT_FWI - [0:0]
:LIBVIRT_FWX - [0:0]
-A FORWARD -s 10.0.2.0/24 -d 10.0.1.0/24 -i enp0s31f6 -m policy --dir in --pol ipsec --reqid 1 --proto esp -j CHẤP NHẬN
-A FORWARD -s 10.0.1.0/24 -d 10.0.2.0/24 -o enp0s31f6 -m policy --dir out --pol ipsec --reqid 1 --proto esp -j CHẤP NHẬN
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j CHẤP NHẬN
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j CHẤP NHẬN
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j CHẤP NHẬN
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j CHẤP NHẬN
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 53 -j CHẤP NHẬN
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 53 -j CHẤP NHẬN
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j CHẤP NHẬN
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 68 -j CHẤP NHẬN
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j CHẤP NHẬN
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate LIÊN QUAN, ĐÃ THÀNH LẬP -j CHẤP NHẬN
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j CHẤP NHẬN
LÀM