Tôi có một máy chủ minecraft chạy trên VPS (Debian 10), nhưng VPS quá yếu để xử lý nên tôi muốn sử dụng một máy chủ cục bộ mạnh hơn để chạy nó (Ubuntu 22.04). VPS đang lưu trữ một máy chủ OpenVPN và máy chủ cục bộ kết nối với tư cách là máy khách duy nhất. VPS ở mức 10.8.0.1 và máy chủ cục bộ ở mức 10.8.0.6 (192.168.1.185 trên mạng cục bộ).
Tôi đã sử dụng các quy tắc iptables để chuyển tiếp các gói VPN tun0 tại 10.8.0.6:25565 tới IP của máy chủ cục bộ. Điều này đang hoạt động tốt: Tôi có thể truy vấn máy chủ minecraft từ VPS. Sau đó, tôi thiết lập cùng một bộ quy tắc (tất nhiên là với các IP có liên quan được hoán đổi) trên VPS để chuyển tiếp các kết nối từ vps_external_ip:25565 đến 10.8.0.6:25565. Quy tắc này đang chuyển tiếp tất cả các gói đến máy chủ cục bộ, nhưng kết nối luôn hết thời gian chờ. Điều kỳ lạ là các kết nối không hoạt động từ VPS -> máy chủ cục bộ cũng như bên ngoài -> VPS -> máy chủ cục bộ làm tăng bộ đếm gói của bất kỳ quy tắc POSTROUTING MASQUERADE nào, nhưng chúng hoạt động đối với quy tắc PREROUTING. Có các kết nối TCP/UDP đơn giản là hết thời gian chờ khi truy cập VPS trên eth0:25565, không có lỗi từ chối kết nối.
Chuyển tiếp IPV4 được bật trên cả hai máy và tôi đã thử tắt UFW, không gặp may ở đó.
Tôi đã thiết lập quy tắc nhật ký trên NAT POSTROUTE của cả hai máy chủ, nhưng tôi không thực sự chắc chắn cách khắc phục sự cố vì tôi không thể tìm thấy bất kỳ sự cố nào.
Đầu ra nhật ký POSTROUTE (iptables -t nat -I POSTROUTING -j LOG --log-prefix "NAT:" --log-level 7)
##### VPS
Ngày 23 tháng 4 20:52:02 vpskernel: [1552376.122382] NAT1:IN= OUT=tun0 SRC=<my ip> DST=10.8.0.6 LEN=48 TOS=0x08 PREC=0x20 TTL=114 ID=21284 DF PROTO=TCP SPT =1806 DPT=25565 WINDOW=64240 RES=0x00 SYN URGP=0
#### Máy chủ cục bộ
<không thể tìm thấy bất kỳ nhật ký có liên quan nào grepping /var/log/kern.log cho NAT1 và không có nhật ký nào cho tun0>
Tôi đã sử dụng /etc/ufw/b Before.rules cho mỗi máy chủ để thiết lập các quy tắc iptables.
VPS /etc/ufw/b Before.rules:
# BẮT ĐẦU QUY TẮC OPENVPN
# Quy tắc bảng NAT
* tự nhiên
:CHẤP NHẬN TRƯỚC [0:0]
:POSTROUTING CHẤP NHẬN [0:0]
# Cho phép lưu lượng truy cập từ máy khách OpenVPN đến eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
# KẾT THÚC QUY TẮC MỞVPN
-A PREROUTING -i eth0 -d <vps IP bên ngoài> -p tcp --dport 25565 -j DNAT --to-destination 10.8.0.6:25565
-A PREROUTING -i eth0 -d <vps IP bên ngoài> -p udp --dport 25565 -j DNAT --to-destination 10.8.0.6:25565
-A POSTROUTING -s 10.0.0.0/8 ! -d 10.0.0.0/8 -j MẶT MẠO
LÀM
Máy chủ cục bộ /etc/ufw/b Before.rules:
* tự nhiên
:CHẤP NHẬN TRƯỚC [0:0]
:POSTROUTING CHẤP NHẬN [0:0]
-A PREROUTING -i tun0 -d 10.8.0.6 -p tcp --dport 25565 -j DNAT --to-destination 192.168.1.185:25565
-A PREROUTING -i tun0 -d 10.8.0.6 -p udp --dport 25565 -j DNAT --to-destination 192.168.1.185:25565
# thiết lập định tuyến
-A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MẶT MẠO
LÀM
Quy tắc PREROUTING đang hoạt động nhưng bộ đếm quy tắc POSTROUTING không tăng.
Tôi đã chạy tcpdump trên 25565 để gỡ lỗi. Tôi thấy các gói đến, nhưng tôi không thấy bất kỳ sự trở lại nào trên bất kỳ giao diện nào khi kết nối bên ngoài. Khi truy vấn trực tiếp từ VPS, tôi thấy máy chủ cục bộ phản hồi trên tun0. Có vẻ như vấn đề là máy chủ cục bộ đang cố phản hồi trực tiếp tới IP của tôi trên en01 thay vì tới VPS trên tun0, nhưng tôi không chắc cách khắc phục điều đó.
VPS tcpdump:
# eth 0
21:43:39.972647 IP my_ip.2729 > vps_ip.25565: Flags [S], seq 1483515507, win 64240, tùy chọn [mss 1460,nop,nop,sackOK], độ dài 0
# điệu0
21:43:39.972739 IP my_ip.2729 > 10.8.0.6.25565: Flags [S], seq 1483515507, win 64240, tùy chọn [mss 1460,nop,nop,sackOK], độ dài 0
Máy chủ cục bộ tcpdump:
#tun0
21:43:39.972566 IP my_ip.2729 > 10.8.0.6.25565: Flags [S], seq 1483515507, win 64240, tùy chọn [mss 1356,nop,nop,sackOK], độ dài 0
#vi01
21:43:39.972618 IP 10.8.0.6.25565 > my_ip.2729: Flags [S.], seq 2141764446, ack 1483515508, win 64240, tùy chọn [mss 1460,nop,nop,sackOK], độ dài 0