如何将IP请求转发到特定的端口

我有2台服务器

  • 第一个(SRV01)正在运行绑定和其他Web应用程序
  • 第二个(SRV02)运行2个服务器我的世界(^^)

在绑定我有2个服务器MC的录音

s1.domain.tld A SRV02IP s2.domain.tld A SRV02IP 

2 MC服务器在2个不同的端口25565和25566上运行

所以我希望来自s1.domain.tld:25565的请求将发送到SRV02IP:25565并且来自s2.domain.tld:25565的请求将发送到SRV02IP:25566

我想我需要在SRV02 iptables中做这个。 我已经看了一些关于iptables的话题,但是和我无关。

你可以帮帮我吗 ?

RGDS。

只要两台服务器都可以公开访问,这是可能的。 将s1.domain.tld指向SRV01IP,将s2.domain.tld指向SRV02IP。 s2.domain.tld:25565已经有效。 在SRV02IP上设置我的世界:25566,然后在SRV01IP的iptables上,你需要转发:25565到SRV02IP:25566:

 iptables -t nat -I PREROUTING -p tcp --dport 25565 -j DNAT --to-destination SRV02IP:25566 iptables -t nat -I POSTROUTING -p tcp --dport 25566 -j MASQUERADE 

最后,要使其工作,您需要在proc中启用IP转发:

 echo "1" > /proc/sys/net/ipv4/ip_forward 

可以了,好了。 有一点要注意的是,这不会在重新启动之间持续。 要保持它的存在,请确保保存了IPTables规则(根据发行版不同而不同),并编辑/etc/sysctl.conf以通过编辑以下行(或者如果不存在,添加它)来使ip_forward持续存在:

net.ipv4.ip_forward = 1

只要绑定另一个IP到SRV02。 如果你没有额外的外部IP也可以使用内部(有一些额外的技巧)。 安装Squid代理。 这可以将stream量redirect到另一个端口。

http://www.linuxquestions.org/questions/linux-networking-3/debian-iptables-squid-redirect-port-80-to-port-8080-on-another-machine-474027/

这听起来像你有一个公共IP和两个后端服务器与私人IP(?) – 如果这是你所问的情况是不可能的:你不能有两个应用程序侦听相同的端口和(公共)IP地址。

你不能这样做从DNS(DNSlogging没有“端口”的概念),从iptables做是错误的事情(这可能不可能,但如果它是涉及到在防火墙规则中做DNS查找这不是我会build议的)。
您需要两个公共IP地址才能使其工作,或者您需要在备用端口上运行您的一台Minecraft服务器。