Reserve Ephemeral ports


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Reserve Ephemeral ports
# 1  
Old 03-30-2011
Reserve Ephemeral ports

my apps use port 40001; however, for example, firstly, I ftp to other server, it made a high port locally, remote is port 21, unfortunately, it hit my port 40001 and my apps is unable to startup. This chance is very very little, but I hit it. Can resevse my port 40001? otherwise command don't use it
# 2  
Old 03-30-2011
You could put a tcp_relay.c listener on 40001 to forward the connection to localhost:21. It can pick up the port (bind) for listen() even if in use for non-bound sockets, with SO_REUSEADDR.
# 3  
Old 03-31-2011
Add your application and port to the /etc/services file. It will prevent any other program to use the port (Obviously, any other program that is well written :P)

Code:
myapp      40001/tcp
myapp      40001/udp


Last edited by rmtzcx; 03-31-2011 at 03:44 PM..
# 4  
Old 03-31-2011
Quote:
Originally Posted by rmtzcx
Add your application and port to the /etc/services file. I will prevent any other program to use the port (Obviously, any other program that is well written :P)
I don't think that's true, even by convention. How could even a well-written program prevent itself from being randomly assigned a high port number? It has no choice in the matter, and the kernel certainly doesn't check /etc/services...

This may differ from system to system, but I think you're safe from random assignments when you use numbers less than 32768.

Last edited by Corona688; 03-31-2011 at 03:45 PM..
# 5  
Old 03-31-2011
Quote:
Originally Posted by Corona688
... and the kernel certainly doesn't check /etc/services...

This may differ from system to system, but I think you're safe from random assignments when you use numbers less than 32768.
Hi Corona688,

I was under the impression that the kernel would not use ports listed on /etc/services for new connections.

goobid,

One solution could be change the value of the local port range in order to prevent the kernel to assign any random port below 40001. For example on Linux you can change it as follows:

Code:
sysctl -w "net.ipv4.ip_local_port_range=40002  65000"

# Add the line to /etc/sysctl.conf file a well
echo "net.ipv4.ip_local_port_range = 40002  65500" >>/etc/sysctl.conf

Under normal circumstances 25,000 ports for random assignments should be enough.


Here is a nice reference to change the value of the 'ephemeral' ports in other OSes.
The Ephemeral Port Range
# 6  
Old 03-31-2011
Quote:
Originally Posted by rmtzcx
Hi Corona688,

I was under the impression that the kernel would not use ports listed on /etc/services for new connections.
The kernel almost never reaches into userspace of its own volition. "Almost" because it has to when it boots, just once, to run /sbin/init.
Quote:
One solution could be change the value of the local port range in order to prevent the kernel to assign any random port below 40001.
I don't think that's necessary if he could just use a port less than 32768 in the first place. A solution that doesn't require root access to every computer you want to run it on is nice. That setting also proves that Linux doesn't assign random ports below 32768 by default:
Code:
$ cat /proc/sys/net/ipv4/ip_local_port_range 
32768   61000

Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. AIX

Forcing named 9 to use a fixed ephemeral port range

I'll start with I'm not an AIX expert, I inherited a lot of AIX servers to maintain. My problem is on AIX 7.1 TL4 SP4 environments. I'm running named as a DNS forwarder only to internal DNS servers. These AIX servers have a customized UDP ephemeral port range to avoid conflicting with the... (0 Replies)
Discussion started by: seanc
0 Replies

2. Red Hat

Which is the effective ephemeral port range in Linux 2.6 for this set up?

In my Linux system ephemeral port range is showing different ranges as follows $ cat /proc/sys/net/ipv4/ip_local_port_range 32768 61000  cat /etc/sysctl.conf | grep net.ipv4.ip_local_port_range net.ipv4.ip_local_port_range = 9000 65500 Which will be the effective ephemeral port... (5 Replies)
Discussion started by: steephen
5 Replies

3. AIX

Reserve Ports

Hi I have a ticket to Reserve ports for SAS install in SAS servers. Does anyone knows the procedure how to do it. it will be helpful for me please Thanks in Advance (4 Replies)
Discussion started by: gulamibrahim
4 Replies

4. Shell Programming and Scripting

Reserve resources (memory and processes)

I have a shell script which sets some variables and then calls modules of a program in succession, one by one. Problem is that the script is executed on servers with many users, so sometimes the script starts running, runs for 10 minutes and then breaks due to lack of resources when other users run... (1 Reply)
Discussion started by: tetreb
1 Replies

5. Filesystems, Disks and Memory

Create file for space Reserve

Hi All, I want to make a 3GB of space reserve on Solaris. Let me know whether there is a way by creating empty file of 3GB so that i can delete that file in future to utilize that space. Or any other better ways for space reserve. -Vinodh' Kumar (4 Replies)
Discussion started by: vino_hymi
4 Replies

6. Solaris

Reserve Memory for Global Zone

We have several containers on one machine and would like to reserve some memory for the global zone. capped-memory only allows max physical/swap and setting a max on each container isn't an option. The server has 32GB physical and 30GB swap. Currently there are ten containers on it. Normally... (6 Replies)
Discussion started by: kharjahn
6 Replies

7. Linux

proper way to reserve ports in linux

How do you debug a perl script non interactively, similar to bash -x? (1 Reply)
Discussion started by: marcpascual
1 Replies

8. Solaris

Reserve Failed error for HD

Hi Guys, Anybody come across this error when formating a harddisk. "Reserved Failed" Supected hardisk failure, is my assumption correct. Thanks (5 Replies)
Discussion started by: bigmoon
5 Replies
Login or Register to Ask a Question