我想用 KVM 在我的 Ubuntu 16.04 服务器上的 Windows VM 中创建一个游戏服务器。
我已经安装了 vm 并且它运行正常。我直接在 VM 中停用了 Windows 防火墙。
Windows VM 通过网桥与同样有效的 Internet 进行通信。
对于我的服务器,我在 Ubuntu 防火墙 ( Iptables ) 中发布了这些端口:
TCP: 2302,27015-27030,27036-27037
UDP: 2302,4380,27000-27031,27036
我根据这些说明实现了端口转发:https ://www.cyberciti.biz/faq/kvm-forward-ports-to-guests-vm-with-ufw-on-linux/
重新调整这个iptables -L FORWARD -nv --line-number
:
root@s1 ~ # iptables -L FORWARD -nv --line-number
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 2532 201K ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED
2 5720 842K ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0
3 0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
4 0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
5 0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
6 0 0 ACCEPT all -- * virbr0 192.168.2.0/24 192.168.122.0/24 state NEW,RELATED,ESTABLISHED
重新调整这个iptables-save -t filter | grep FORWARD
:
root@s1 ~ # iptables-save -t filter | grep FORWARD
:FORWARD ACCEPT [0:0]
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.2.0/24 -d 192.168.122.0/24 -o virbr0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
我的网络界面如下所示:
### Hetzner Online GmbH installimage
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
iface lo inet6 loopback
auto br0
iface br0 inet static
address <My Address>
netmask 255.255.255.192
gateway <Another Address>
# route <Another Address> via <Another Address>
up route add -net <Another Address> netmask 255.255.255.192 gw <Another Address> dev eth0
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
iface br0 inet6 auto
iface eth0 inet6 static
address <Another Address>
netmask 64
gateway <Another Address>
它实际上对我来说看起来不错,但是我对kvm还没有太多经验,因为当我尝试连接到游戏服务器时,客户端没有……我猜端口转发仍然存在问题。
有没有人可以给我一个提示?谢谢 :)
- - 编辑 - -
我的 Windows VM 的 IP 地址:192.168.122.191
经过几天的搜索,我发现我在 Windows VM 中运行的服务器需要的端口比我释放的要多 - 我释放了我在文档中找到的所有端口... -。
如果您从 KVM 虚拟机开始并希望从 Internet 连接到虚拟机,则配置一个桥接网络,您可以在其中组合您的网络接口。之后,VM 将作为 NAT 网络中的设备进行管理。
那么这些指令就可以用来实现从Internet到Vm的端口的端口转发:
虚拟机是这样创建的: