Làm cách nào để chuyển tiếp tất cả lưu lượng đến một cổng nhất định sang một cổng khác?
Xác định bố cục và vấn đề
bố cục
Đây là cách bố trí của những gì tôi đang cố gắng làm ...
+---------+ +---------------------+ +---------------- +
| mạng LAN | <---> | 6789 | | |
| Khách hàng | | Cổng | | Người dẫn chương trình |
| | | 4567 | <---> | Dịch vụ 2345 |
+---------+ +---------------------+ +---------------- +
Tôi muốn chuyển tiếp một cách minh bạch tất cả lưu lượng đến trên cổng 6789 sang cổng 4567. Máy khách trên mạng WAN và dịch vụ trên máy chủ không được biết gì về cổng.
Cổng là Debian 10 với tường lửa.
Vấn đề
Tôi không thể chuyển lưu lượng truy cập đến cổng 6789 trên cổng để chuyển tiếp đến cổng 4567.
Thiết lập hiện tại
Bước 01 - Hiển thị cổng trên tường lửa và xác nhận cổng đang mở.
Mở cổng trên cổng
Chạy tường lửa-cmd
chỉ huy: tường lửa-cmd --add-port=6789
Kiểm tra trạng thái tường lửa...
root@gateway:~# tường lửa-cmd --list-all
công khai (đang hoạt động)
mục tiêu: mặc định
icmp-block-đảo ngược: không
giao diện: etho0
nguồn:
dịch vụ: dhcpv6-client http https ssh
cổng: 6789/tcp
giao thức:
hóa trang: vâng
cổng chuyển tiếp:
cổng nguồn:
khối icmp:
Quy tắc phong phú:
- Xác nhận cổng đang mở.
- Trên cổng, bắt đầu một người nghe:
nc -vvlp 6789 &
- Xác nhận người nghe đã bật...
root@gateway:~# netstat -tulnp | grep 6789
tcp 0 0 0.0.0.0:6789 0.0.0.0:* NGHE 2274/nc
- Từ máy khách, cố gắng tiếp cận cổng:
client@client123:~$ nc -vvN gateway.example.org 6789
Đã kết nối với cổng gateway.example.org 6789 [tcp/*] thành công!
Kết luận: Cổng 6789 đang mở trên tường lửa.
Làm sạch bằng cách giết chết nc
xử lý trên cả máy khách và cổng.
Bước 02 - Xác nhận kết nối giữa gateway và dịch vụ trên máy chủ
root@gateway:~# telnet localhost 4567
Đang thử 127.0.0.1...
Đã kết nối với máy chủ cục bộ.
Ký tự thoát là '^]'.
220 backendhost.backendhost MyService (Debian/GNU)
Kết luận: Đường hầm giữa cổng và dịch vụ trên máy chủ đã hoạt động.
Bước 03 - Thêm cổng chuyển tiếp trên cổng và kiểm tra trạng thái tường lửa
root@gateway:~# tường lửa-cmd --add-forward-port=port=6789:proto=tcp:toport=4567`
root@gateway:~# tường lửa-cmd --list-all
công khai (đang hoạt động)
mục tiêu: mặc định
icmp-block-đảo ngược: không
giao diện: etho0
nguồn:
dịch vụ: dhcpv6-client ssh
cổng: 6789/tcp
giao thức:
hóa trang: không
cổng chuyển tiếp: port=6789:proto=tcp:toport=4567:toaddr=
cổng nguồn:
khối icmp:
Quy tắc phong phú:
Kết luận: Cổng chuyển tiếp nằm trong tường lửa.
Tại thời điểm này, nếu tôi cố gắng telnet máy chủ từ máy khách, tôi nhận được...
client@client123:~$ telnet gateway.example.org 6789
Đang thử <IP_of_gateway>...
telnet: Không thể kết nối với máy chủ từ xa: Kết nối bị từ chối
Tại thời điểm này, tôi muốn xem những gì tôi đã thấy ở Bước 02 ở trên.
các câu hỏi
Đây là nơi tôi không chắc chắn về ...
Khi tôi chạy netstat -tulnp
trên cổng, nó KHÔNG hiển thị bất kỳ thứ gì đang nghe trên cổng 6789. Tôi không mong đợi điều đó xảy ra vì tôi không có bất kỳ dịch vụ nào đang chạy nghe trên cổng 6789.
Tôi có cần một số loại dịch vụ để nghe trên cổng 6789 không? Nếu vậy thì sao? Hay tôi đang thiếu thứ gì đó trong cài đặt tường lửa? Tôi có cần một số loại proxy minh bạch như được đề cập không đây?
Tôi sẽ không làm lộn xộn bài đăng này với các liên kết đến tất cả những thứ tôi đã đọc trong vài tuần qua, nhưng nếu có một bài đăng có câu trả lời, xin vui lòng chỉ ra nó.
Chỉnh sửa
Đáp lại @A.B
Máy chủ chạy phía sau tường lửa. Khi máy chủ được khởi động, nó sẽ tự động tạo một đường hầm đến cổng bằng cổng SSH chuyển tiếp.
Đây là lệnh mà máy chủ chạy khi khởi động: ssh -N -R 4567:localhost:2345 [email protected]
Đường hầm đó đã được xác nhận trong Bước 02. Và mặc dù tôi không đề cập đến điều đó trước đó, nhưng máy khách hoạt động khi nằm trong cùng mạng LAN với máy chủ.
Điều tôi đang gặp khó khăn là khiến lưu lượng truy cập đến cổng được chuyển thành công đến máy chủ lưu trữ. Cổng phải "trong suốt". Chứng chỉ bảo mật do máy chủ nắm giữ và máy khách nên nghĩ rằng nó đang nói chuyện trực tiếp với máy chủ.
Tôi vẫn đang cố gắng tìm hiểu các thuật ngữ, vì vậy nếu có một cách chính xác hơn để đặt câu hỏi này, tôi chắc chắn muốn biết nó là gì.