TL;DR: Làm cách nào tôi có thể biến ip máy khách kết nối với VPS được lưu trữ từ xa thành IP được chuyển tiếp/natted, qua iptables, tới máy chủ trò chơi đang chạy tại nhà tôi?
Tôi có một máy chủ trò chơi Rust mà tôi đang lưu trữ tại nhà của mình. Tôi muốn điều đó được công khai, tuy nhiên tôi không nhất thiết muốn cung cấp địa chỉ IP của mình cho mọi người. Vì vậy, tôi đang thuê một VPS nhỏ có ý định sử dụng cơ bản như một proxy ngược. Tôi hiện đang sử dụng nginx để chuyển tiếp lưu lượng truy cập qua VPN máy chủ clinet, hoạt động tốt. Tuy nhiên, trên máy chủ trò chơi, IP của mọi người chơi là địa chỉ đường hầm của VPS, không phải IP thực của máy khách. tôi đã thử sử dụng độ trong suốt của proxy_pass $remote_addr:28015; proxy_responses 0
trong cấu hình nginx của tôi, không có thay đổi. Vì vậy, sau đó tôi đã chuyển sang làm điều đó thông qua iptables.
Tôi có thể làm cho nó hoạt động 99% theo cách tôi muốn, thực hiện chính xác điều này:
sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 28015 -j NAT --to-destination my_ip:28015
iptables -t nat -A PREROUTING -p udp --dport 28015 -j NAT --to-destination my_ip:28015
iptables -t nat -A PREROUTING -p tcp --dport 28016 -j NAT --to-destination my_ip:28016
iptables -t nat -A PREROUTING -p udp --dport 28016 -j NAT --to-destination my_ip:28016
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -p tcp -d my_ip --dport 28015 -m state --state MỚI, THÀNH LẬP, LIÊN QUAN -j CHẤP NHẬN
iptables -A FORWARD -p ucp -d my_ip --dport 28015 -m state --state MỚI, THÀNH LẬP, LIÊN QUAN -j CHẤP NHẬN
ufw vô hiệu hóa
kích hoạt ufw
khởi động lại vps\
Những gì nó làm về cơ bản giống như nginx, ở chỗ nó hoạt động tốt, nhưng mọi người chỉ có ip công khai của VPS (lưu ý rằng địa chỉ IP LAN và Công khai của VPS là giống nhau). Nếu tôi bỏ qua masqurade, nó không hoạt động.
Một số thông tin về thiết lập:
VPS có một giao diện duy nhất: eth0
VPS đang chạy Ubuntu 20.04
Ở nhà tôi, modem đang ở chế độ passthru tới pfsesne.Trên pfsense, tôi có các quy tắc chuyển tiếp cổng để chuyển 28015/28016 tcp/udp sang máy chủ trò chơi
.
Chú thích bên lề:
Tôi không chắc tại sao nginx không hoạt động cho việc này. Gần như là nginx không làm gì với proxy_pass $remote_addr
chỉ thị.