有没有办法将临时端口的数量增加一倍,并绕过16位的限制?我已经尝试过在eth0上创建虚拟以太网接口,希望它能打破这一限制。尽管应用程序在出站流量中使用了新的虚拟is,但它似乎仍然达到了相同的临时端口限制。我假设虚拟端口与物理接口上的端口具有一对一的映射关系。
ifconfig eth0:1 10.10.10.210网络掩码255.255.255.192 ifconfig eht0:2 10.10.10.211网络掩码255.255.255.192
有人能告诉我如何在不增加额外网卡的情况下将Linux中的临时端口总数增加一倍吗?
(仅供参考,我已尝试增加ulimit/max打开文件,更改端口范围,启用tcp循环/时间戳,减少tcp fin超时...我想我们只需要为这台代理机器提供超过65k的端口。)
发布于 2013-09-10 04:29:55
如果您通过eth0创建虚拟接口,那么您应该能够为这些接口分配不同的IP地址。这样,您就可以对绑定到不同地址的多个套接字使用相同的临时端口号(它们是在内核中分配的,因此您实际上没有太多的控制权) --您可能需要设置SO_REUSEADDR选项。这样做的原因是,对于传入的数据包(UDP/TCP),通过查看本地源IP和端口号来识别流。
正如@Duck提到的,由于TCP/UDP报头只为端口号分配了16位,因此在本地堆栈中增加临时范围没有多大意义。
发布于 2013-09-09 23:08:51
这是网络协议的一个限制。例如,TCP和UDP都具有16位的源端口和目的端口。即使您可以增加端口的数量,也没有人可以对它们进行寻址。
发布于 2014-06-20 18:01:05
原来,如果您想要超过65535的限制,则不能使用0绑定临时端口。相反,您需要使用显式端口号。
此外,打开tcp_tw_reuse
可能会有所帮助:http://krenel.org/tcp-time_wait-and-ephemeral-ports-bad-friends.html
https://stackoverflow.com/questions/18701063
复制相似问题