Scale up as you grow — whether you're running one virtual machine or ten thousand.

From GPU-powered inference and Kubernetes to managed databases and storage, get everything you need to build, scale, and deploy intelligent applications.

This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
In /etc/iptables/rules.v4, under # Acceptable TCP traffic, I think
-A TCP -p tcp --dport 22 -j ACCEPT
Should be
-A INPUT -p tcp --dport 22 -j ACCEPT
Which means that the command below does not catch all the errors in the file:
sudo iptables-restore -t /etc/iptables/rules.v4
netfilter-persistent which is what iptables-persistent is/going to be called in Ubuntu 15.04. Doesn’t work. yay
Should your /etc/iptables/rules.v4 config also allow port 80 tcp connections?
I followed these instructions and when I applied the IPv6 rules I got an issue.
When I execute:
sudo apt-get update
I get the following error:
Err http://security.ubuntu.com trusty-security InRelease
Err http://ppa.launchpad.net trusty InRelease
Err http://ppa.launchpad.net trusty Release.gpg
Could not resolve 'ppa.launchpad.net'
Err http://security.ubuntu.com trusty-security Release.gpg
Could not resolve 'security.ubuntu.com'
Err http://mirrors.digitalocean.com trusty InRelease
Err http://mirrors.digitalocean.com trusty-updates InRelease
Err http://mirrors.digitalocean.com trusty Release.gpg
Could not resolve 'mirrors.digitalocean.com'
Err http://mirrors.digitalocean.com trusty-updates Release.gpg
Could not resolve 'mirrors.digitalocean.com'
Reading package lists... Done
W: Failed to fetch http://mirrors.digitalocean.com/ubuntu/dists/trusty/InRelease
W: Failed to fetch http://mirrors.digitalocean.com/ubuntu/dists/trusty-updates/InRelease
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/trusty-security/InRelease
W: Failed to fetch http://ppa.launchpad.net/ondrej/php5-5.6/ubuntu/dists/trusty/InRelease
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/trusty-security/Release.gpg Could not resolve 'security.ubuntu.com'
W: Failed to fetch http://ppa.launchpad.net/ondrej/php5-5.6/ubuntu/dists/trusty/Release.gpg Could not resolve 'ppa.launchpad.net'
W: Failed to fetch http://mirrors.digitalocean.com/ubuntu/dists/trusty/Release.gpg Could not resolve 'mirrors.digitalocean.com'
W: Failed to fetch http://mirrors.digitalocean.com/ubuntu/dists/trusty-updates/Release.gpg Could not resolve 'mirrors.digitalocean.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.
Please help!
Justin, I have to say that I’m a bit disappointed in the direction this tutorial takes.
Some people aren’t using IPv6 because they do not know how. Writing tutorials that assume you want to block IPv6 in 2015 is simply wrong, and is part of the reason so much of today’s IPv6-enabled hosts are not actually IPv6-enabled when it comes to services.
You write incredible documentation Justin, and it’s very sad to see such a shortcut being used instead of an opportunity to teach people how to properly implement an IPv6 firewall. It is literally the exact same configuration except you would allow ICMPv6, so there was probably more time spent explaining people how not to use IPv6 than the time that would’ve been spent implementing the entire firewall correctly.
For instance, the whole section on apt-get would be unnecessary with a properly configured server. A customer recently was unable to update their server after following this tutorial and I strongly suspect that they DROP’d all IPv6 traffic without following the apt-get section.
I’m sure the idea was to confuse customers less, but I think the result is the opposite. And it’s simpler to enable IPv6 than to block it, so might as well do the right thing.
I am willing to send in pull requests or to perform the work required to turn this into a dual stack tutorial if this is the direction DigitalOcean wants to take instead.
That being said, I want to emphasize that the way you write tutorials is terrific and it speaks a lot that my main complaint is not about the accuracy of the technical content but rather what content was included. My nitpicks about the technical content are not worth mentioning. Keep up the good work!
Just a note, to save iptables properly on Debian 8/Ubuntu:
service netfilter-persistent reload service netfilter-persistent save
You have to reload the configuration into memory, otherwise it will just overwrite your changes!
For Ubuntu 16.04
service netfilter-persistent reload
service netfilter-persistent save
worked for me instead of
sudo service iptables-persistent reload