Tôi đang cố gắng hướng lưu lượng truy cập của máy khách đến một cụm kubernetes NodePort đang lắng nghe 192.168.1.100.30000
.
Nhu cầu của khách hàng để thực hiện một yêu cầu để 192.168.1.100.8000
vì vậy tôi đã thêm quy tắc REDIRECT sau vào iptables:
iptables -t nat -I PREROUTING -p tcp --dst 192.168.1.100 --dport 8000 -j REDIRECT --to-port 30000
sau đó tôi phát hành một curl để 192.168.1.100:8000
tuy nhiên, trong tcpdump tôi thấy một cổng khác:
# tcpdump -i lo -nnvvv host 192.168.1.100 và cổng 8000
tcpdump: lắng nghe trên lo, loại liên kết EN10MB (Ethernet), kích thước chụp 262144 byte
[Giao diện: lo] 20:39:22.685968 IP (tos 0x0, ttl 64, id 20590, offset 0, flags [DF], TCP nguyên mẫu (6), độ dài 40)
[Giao diện: lo] 192.168.1.100.8000 > 192.168.1.100.49816: Flags [R.], cksum 0xacda (đúng), seq 0, ack 3840205844, win 0, độ dài 0
[Giao diện: lo] 20:39:37.519256 IP (tos 0x0, ttl 64, id 34221, offset 0, flags [DF], TCP nguyên mẫu (6), độ dài 40)
Tôi hy vọng tcpdump sẽ hiển thị một cái gì đó như
192.168.1.100.8000 > 192.168.1.100.30000
Tuy nhiên, nó đang hiển thị và gây ra lỗi từ chối kết nối vì không có quy trình nào được liệt kê trên 192.168.1.100.49816
.
192.168.1.100.8000 > 192.168.1.100.49816
Tôi đang sử dụng môi trường thử nghiệm nên tôi không có quyền truy cập vào các thiết bị từ xa, đó là lý do tại sao tôi đang sử dụng Xoăn
để kiểm tra đường dẫn REDIRECT của iptables.
Có lý do nào khiến việc thêm quy tắc REDIRECT khiến tcpdump chuyển hướng lưu lượng truy cập đến một cổng khác với cổng được chỉ định không?
Chỉnh sửa:
Sau @A.B. đề xuất đã thêm quy tắc OUTPUT sau:
iptables -t nat -I OUTPUT -d 192.168.1.100 -p tcp --dport 8000 -j REDIRECT --to-port 30000
và cuộn tròn tiếp tục tiến hành, số lượng gói cho chuỗi OUTPUT sẽ tăng lên (tuy nhiên, gói chuỗi PREROUTING REDIRECT không tăng):
2 10 600 TRỰC TIẾP tcp -- * * 0.0.0.0/0 192.168.1.100 tcp dpt:8000 cổng chuyển hướng 30000
Tuy nhiên, nhận được lỗi sau:
# cuộn tròn -vk https://192.168.1.100:8000/v1/api
* Sắp kết nối() với cổng 192.168.1.100 8000 (#0)
* Đang thử 192.168.1.100...
* Đã kết nối với cổng 192.168.1.100 (192.168.1.100) 8000 (#0)
* Khởi tạo NSS với certpath: sql:/etc/pki/nssdb
* Lỗi NSS -12263 (SSL_ERROR_RX_RECORD_TOO_LONG)
* SSL đã nhận được bản ghi vượt quá độ dài tối đa cho phép.
* Đóng kết nối 0
curl: (35) SSL đã nhận được bản ghi vượt quá độ dài tối đa cho phép.
Ngoài ra, đã thử thêm một mạng hệ thống từ xa, lần này số lượng gói PREROUTING REDIRECT CHAIN tăng lên sau khi thực hiện cuộn tròn hệ thống từ xa ...
(nhưng CHUỖI ĐẦU RA không tăng):
2 34 2040 TRỰC TIẾP tcp -- * * 0.0.0.0/0 172.16.128.1 tcp dpt:8000 cổng chuyển hướng 30000
Lỗi:
# ip netns exec remotesystem curl -vk https://192.168.1.100:8000/v1/api
* Sắp kết nối() với cổng 192.168.1.100 8000 (#0)
* Đang thử 192.168.1.100...
* Kết nối quá hạn
* Không kết nối được với 192.168.1.100:8000; Kết nối quá hạn
* Đóng kết nối 0
curl: (7) Không kết nối được với 192.168.1.100:8000; Kết nối quá hạn