Created
February 25, 2016 14:26
-
-
Save dearing/9388218f3c6ef6e48114 to your computer and use it in GitHub Desktop.
nftables with docker
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# /etc/systemd/system/docker.service.d/docker-nftables.conf | |
# disable iptables in docker, allowing nftables to do work | |
[Service] | |
ExecStart= | |
ExecStart=/usr/bin/docker daemon -H fd:// --iptables=false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/nft -f | |
# /etc/nftables.conf | |
table inet filter { | |
chain input { | |
type filter hook input priority 0; | |
# allow established/related connections | |
ct state {established, related} counter accept | |
# early drop of invalid connections | |
ct state invalid counter drop | |
# allow from loopback | |
iifname lo counter accept | |
# allow icmp | |
ip protocol icmp counter accept | |
ip6 nexthdr icmpv6 counter accept | |
# allow ssh | |
# tcp dport ssh counter accept | |
# everything else | |
counter reject with icmp type port-unreachable | |
} | |
chain forward { | |
type filter hook forward priority 0; | |
# drop | |
} | |
chain output { | |
type filter hook output priority 0; | |
} | |
} | |
table ip nat { | |
chain prerouting { | |
type nat hook prerouting priority 0; | |
} | |
chain postrouting { | |
type nat hook postrouting priority 0; | |
oifname "eno1" counter masquerade | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
cat > /etc/systemd/network/ipforward.network <<EOF | |
[Network] | |
IPForward=ipv4 | |
EOF | |
cat > /etc/systemd/network/99-docker.conf <<EOF | |
net.ipv4.ip_forward = 1 | |
EOF | |
sysctl -w net.ipv4.ip_forward=1 |
I'm not sure that you can. Docker still uses IPTables so there has be to a shim somewhere. I this gist is trying to do that but I was not able to get it to work. I did get docker-ce and iptables to work on RHEL 8:
https://gist.github.com/dmc5179/2f55cd54a6fdd103ab1873d52e3464a8
Change ExecStart=
on the second line to ExecStart=/usr/bin/dockerd -H fd:// --iptables=false
and it should work.
Also should use /etc/docker/daemon.json
, settings {"iptables": false}
, rather than using a custom systemd config file (or service).
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The /etc/systemd/system/docker.service.d/docker-nftables.conf that you have causes systemctl to just hang in RHEL 8.1.
For one:
ExecStart=/usr/bin/docker daemon -H fd:// --iptables=false
should be
ExecStart=/usr/bin/dockerd daemon -H fd:// --iptables=false
But even if you do that and then try to start the service:
I don't think you're supposed to have ExecStart again in that file. Those files supplement the systemd unit file, not override it:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-Managing_Services_with_systemd-Unit_Files#sect-Managing_Services_with_systemd-Unit_File_Modify
I just added the --iptables=false to the main docker.service file.