假设我有一个始终绑定到相同地址和端口的应用程序(例如 tcp 0.0.0.0:8080)
如果我在另一个实例中再次运行相同的应用程序,它会尝试绑定到相同的地址和端口,这些地址和端口在应用程序第一次执行时当前正在使用。
Linux 中是否有一种系统范围的方法来(预先)改变这一点,使用“假/虚拟”端口映射或某种方式来控制这一点? (比如全局端口映射表?)
将任何监听端口更改/覆盖为另一个端口也将有所帮助。
我是自己机器的管理员,无法从应用程序更改绑定/端口。
答案1
不可以。无法从应用程序外部更改端口。它(应用程序)必须具有某种配置能力来重新分配它将侦听的端口。
说过 - 你可以通过 proxi 方式去。应用程序的每个实例应在具有不同 IP 地址的不同计算机上启动。这可以是不同的物理盒、虚拟机或虚拟网络接口(如果应用程序允许在具有多个 IP 的计算机上选择其 IP)。
一旦您有多个应用程序实例侦听 192.168.10.1:8080、192.168.10.2:8080、192.168.10.3:8080 等 - 您可以在“主”IP 上设置代理并执行类似 192.168.1.1 的映射:8081->192.168.10.1:8080、192.168.1.1:8082->192.168.10.2:8080、192.168.1.1:8083->192.168.10.3:8080等等...
答案2
这个问题有点令人困惑,但是redir
也许对你有用。它将传入的 TCP 连接重定向到特定端口、另一个指定的 IP 地址和端口。