TL / DR
Tôi thiết lập quy tắc tĩnh nat để tôi có thể sử dụng địa chỉ IP internet công cộng của mình để trực tiếp ssh vào một máy chuyên dụng trên mạng bên trong. Kết quả là tôi không thể ssh vào máy chuyên dụng nữa, khi được kết nối qua AnyConnect VPN. Tại sao? Làm thế nào để tôi sửa lỗi này?
Câu chuyện dài:
Tôi có ASA 5512-X mà tôi sử dụng để chấm dứt các phiên VPN AnyConnect. Điều này đã được làm việc rất tốt. Mọi người sử dụng AnyConnect để kết nối với ASA, nhận địa chỉ IP từ nhóm IP được gán đặc biệt và họ có thể truy cập mọi thứ tôi đưa vào danh sách truy cập.
Bây giờ, tôi có ý tưởng này để chuyển trực tiếp cổng 22 sang một máy chuyên dụng trong mạng của mình (tôi chỉ có giao diện bên trong và bên ngoài), để tôi có thể SSH vào địa chỉ IP công cộng của mình và kết thúc trên máy chuyên dụng mà không cần yêu cầu kết nối VPN.
Các thiết lập dường như đủ đơn giản:
object network MyEndpoint
host 10.0.0.1
nat (inside, outside) static interface service tcp ssh ssh
access-list from_outside_inside extended permit tcp any object MyEndpoint eq ssh
access-group from_outside_inside in interface outside
và nó thực sự hoạt động. Bây giờ tôi có thể
ssh ssh.mydomain.com
và thực sự có được một phiên ssh trên máy chuyên dụng của tôi. Tuy nhiên, thành công này đến với chi phí ssh 10.0.0.1
không còn hoạt động nữa khi tôi được kết nối với ASA / mạng của mình thông qua AnyConnect như trước đây, trước khi tôi thiết lập NAT tĩnh.
Tôi chắc chắn có thể kiểm soát hành vi của ASA:
Khi tôi không có các nat (inside,outside)
dòng trong cấu hình của tôi,
ssh 10.0.0.1
hoạt động nhưngssh ssh.mydomain.com
không hoạt động.
Khi tôi có những nat (inside,outside)
quy tắc như là một phần của cấu hình, đó là chiều ngược lại:
ssh ssh.mydomain.com
hoạt động nhưngssh 10.0.0.1
không hoạt động.
Để điều tra, tôi đã thiết lập một bản chụp trên ASA
capture MyEndpoint type raw-data interface inside
capture MyEndpoint type raw-data interface outside
capture MyEndpoint match tcp host 10.0.0.1 any
Khi tôi lần đầu tiên kết nối qua AnyConnect và sau đó thử ssh 10.0.0.1
, bản chụp không hiển thị / chụp bất cứ thứ gì, miễn là nat (inside,outside)
quy tắc được kích hoạt. Ngoài ra, các nỗ lực kết nối SSH của tôi không bao giờ đến được máy chủ.
Rõ ràng ASA đang ăn các yêu cầu kết nối có nguồn gốc từ các điểm cuối được kết nối AnyConnect, khi nat
quy tắc được kích hoạt.
Lúc đầu, tôi nghĩ rằng tôi cần một số bổ sung vào danh sách truy cập, nhưng tôi không thể làm cho nó hoạt động theo cách đó. Giao diện VPN nào lưu lượng truy cập VPN vào ASA nào? bên ngoài hay bên trong? Tôi cho rằng trong trường hợp này không thành vấn đề, bởi vì tôi đang sử dụng ký tự đại diện ( any
) cho nguồn, trong ý kiến của tôi, bao gồm cả lưu lượng VPN.
Sau đó, tôi nghĩ rằng ASA sẽ luôn áp dụng nat, điều đó có nghĩa là gói mang SYN-ACK sẽ được kết nối với IP bên ngoài của tôi để phá vỡ kết nối, vì tôi đang kết nối từ một địa chỉ VPN riêng chứ không phải Internet. Nhưng các SYN không bao giờ đến được máy chủ, do đó không có các SYN-ACK.
Tôi đã dành cả ngày để vùi đầu vào lệnh "mới" nat
. Khi tôi làm show nat
ASA, tôi nhận được
Auto NAT Policies (Section 2)
1 (inside) to (outside) source static MyEndpoint interface service tcp ssh ssh
translate_hits = 0, untranslate_hits = 0
Theo như tôi nhận được hôm nay thì đây chỉ là một bản dịch địa chỉ nguồn để rời khỏi lưu lượng. Tôi không biết, làm thế nào / tại sao điều này ngụ ý một bản dịch địa chỉ đích cho lưu lượng truy cập bắt nguồn từ Internet đến ASA. Ai đó có thể giải thích cho tôi tại sao ASA lại hành xử theo cách này không?
Chỉnh sửa 1: packet-tracer
Đọc qua các tài liệu tôi đi qua lệnh ASA packet-tracer
. Khi tôi làm
packet-tracer input inside tcp 10.100.0.2 31337 10.0.0.1 22
ASA cho tôi biết một luồng sẽ được tạo và gói được chấp nhận. Khi tôi làm
packet-tracer input outside tcp 10.100.0.2 31337 10.0.0.1 22
tôi có
Phase: 6
Type: WEBVPN-SVC
Subtype: in
Result: DROP
Config:
Additional Information:
Result:
input-interface: outside
input-status: up
input-line-status: up
output-interface: inside
output-status: up
output-line-status: up
Action: drop
Drop-reason: (acl-drop) Flow is denied by configured rule
Vì vậy, tôi đoán đây là một số hành vi mong muốn ngầm, ngoại trừ nếu bạn là tôi.
Chỉnh sửa 2: Tìm kiếm kẹp tóc
Tôi đã tìm thấy một số bài báo mà cuối cùng đã chỉ cho tôi bài viết đầy hứa hẹn này chứa thông tin mà tôi có thể cần một quy tắc tự nhiên dọc theo dòng
nat (outside,outside) \
source static \
client_vpn_pool client_vpn_pool \
destination static \
remote_office_net remote_office_net
nhưng nó không hoạt động. Tôi có một đối tượng mạng cho mạng con máy khách vpn của tôi và một đối tượng mạng cho mạng con 10.0.0.1. Điều chỉnh mẫu ở trên không mang lại kết quả như mong đợi.
Khi nat (inside,outside)
quy tắc của tôi được áp dụng, SSH không hoạt động, nhưng tôi có thể ping 10.0.0.1 tốt. Khi tôi thêm một nat (outside,ouside)
quy tắc theo đề xuất của bài viết, ping sẽ ngừng hoạt động. Tôi cũng đã thử các phiên bản của quy tắc bên ngoài với các đối tượng mạng cho máy chủ lưu trữ cụ thể và chỉ phạm vi ip local pool
sử dụng cho các máy khách vpn. Tất cả chỉ làm cho ping dừng lại.
Chỉnh sửa 3: Đừng bận tâm
Nó đang làm việc bây giờ. Tôi thực sự không thay đổi bất cứ điều gì. Tôi vừa mới đi ngủ. Tôi đoán có một số trạng thái nội bộ trong ASA đã gây ra hành vi này và nó đã hết thời gian trong khi tôi đang ngủ.
Vẫn có một điều là khi tôi sử dụng packet-tracer input [inside|outside] tcp <my vpn ip> 31337 10.0.0.1 22
gói theo dõi luôn nói rằng gói sẽ bị hủy.
Khi tôi đặt packet-tracer input inside
nó thất bại tại:
Phase: 6
Type: WEBVPN-SVC
Subtype: in
Result: DROP
Config:
Additional Information:
[...]
Drop-reason: (acl-drop) Flow is denied by configured rule
và khi tôi đặt packet-tracer input outside
nó thất bại tại:
Phase: 6
Type: NAT
Subtype: rpf-check
Result: DROP
Config:
object network MyEndpoint
nat (inside,outside) static interface service tcp ssh ssh
Additional Information:
[...]
Drop-reason: (acl-drop) Flow is denied by configured rule
Tuy nhiên, tính đến ngày hôm nay, ping và SSH đến / từ Máy tính xách tay được kết nối VPN của tôi đến MyEndpoint (còn gọi là 10.0.0.1) hoạt động như một cơ duyên. Làm thế nào điều ASA này hoạt động ???