How to increase internet speed in Linux

Do you know that internet speeds in Linux can be increased? Well it does. Open a Terminal and type the following:
$ sudo nano /etc/sysctl.conf (ubuntu)
$ vi /etc/sysctl.conf (Fedora)
(please note fedora user must be as root to modified it.)

Then Paste the Following at the end of the file:
# Disables packet forwarding
net.ipv4.ip_forward = 0
# Enables source route verification
net.ipv4.conf.default.rp_filter = 1
# Disables the magic-sysrq key
kernel.sysrq = 0
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 25
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 3600
# Turn on the tcp_window_scaling
net.ipv4.tcp_window_scaling = 1
# Turn on the tcp_sack
net.ipv4.tcp_sack = 1
# tcp_fack should be on because of sack
net.ipv4.tcp_fack = 1
# Turn on the tcp_timestamps
net.ipv4.tcp_timestamps = 1
# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1
# Enable ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Disable ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects = 0
# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Don’t Log Spoofed Packets, Source Routed Packets, Redirect Packets
net.ipv4.conf.all.log_martians = 0
# Make more local ports available
net.ipv4.ip_local_port_range = 1024 65000
# Increase maximum amount of memory allocated to shm
kernel.shmmax = 1073741824
# Improve file system performance
vm.bdflush = 100 1200 128 512 15 5000 500 1884 2
# This will increase the amount of memory available for socket input/output queues
net.ipv4.tcp_rmem = 4096 25165824 25165824
net.core.rmem_max = 25165824
net.core.rmem_default = 25165824
net.ipv4.tcp_wmem = 4096 65536 25165824
net.core.wmem_max = 25165824
net.core.wmem_default = 65536
net.core.optmem_max = 25165824
## don’t cache ssthresh from previous connection
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1
## recommended to increase this for 1000 BT or higher
net.core.netdev_max_backlog = 2500
## for 10 GigE, use this, uncomment below
## net.core.netdev_max_backlog = 30000
## Turn off timestamps if you’re on a gigabit or very busy network
## Having it off is one less thing the IP stack needs to work on
## net.ipv4.tcp_timestamps = 0

Then save and exit. Now type the following command to apply the settings:
$ sudo sysctl -p (ubuntu)
$ sysctl -p (fedora)

Also, you will need to issue sysctl -w net.ipv4.route.flush=1 to flush the routing table to make some of these changes happen instantly.

You can disable all these settings by removing those lines you added:
$ sudo nano /etc/sysctl.conf (ubuntu)
$ vi /etc/sysctl.conf (fedora)

Happy surfing~

Share This Post

One Comment - Write a Comment

  1. This purpose of this is actually not to increase the internet speed. It was to solve first some problems that happened about 6 ubuntu versions ago with IPv6 and how it was checked when starting a connection (That part of the code is not shown here but all of this is part of that bigger code am mentioning). The net.core options are done automatically in Ubuntu and they always aim at the best performance with the bandwidth. This was not offered correctly about 3 years ago when the whole thing about this “speed” configurations started. Since then, this changes to system control don’t do anything related to increasing realistically the speed.

    I recommend stop posting this kind of loop messages since they do not have any confirmation that the work, have MANY that actually mention they do not work and the way the kernel works makes it so this is done automatically.

    It confuses new users of Linux into thinking they can actually tune stuff like this.


Post Comment