Ik heb een nogal stom probleem. Ik heb een server met twee NICs erin. De server speelt als router, met onderstaand setjes iptables. Dit werkt goed, alleen in combinatie met Docker is er een probleem. Het blijkt namelijk dat de Docker deamon tijdens het boot-proces EERST wordt geladen en DAARNA de iptables vanuit /etc/rc.local (hierin staat namelijk een iptables-restore < /etc/iptables.sav). De Docker daemon voegt tijdens het starten een aantal iptables-regels toe die vervolgens weer worden verwijderd door het restoren van m'n set regels vanuit /etc/rc.local.
Ik zou kunnen achterhalen welke regels het precies zijn, maar het liefst zorg ik ervoor dat Docker wordt gestart nádat de iptables-regels zijn ge-restored. Hoe doe ik dit in Ubuntu server 14 LTS? Ik wil dus eigenlijk de boot-volgorde aanpassen, zodat Docker pas op het einde wordt gestart.
Ik zou kunnen achterhalen welke regels het precies zijn, maar het liefst zorg ik ervoor dat Docker wordt gestart nádat de iptables-regels zijn ge-restored. Hoe doe ik dit in Ubuntu server 14 LTS? Ik wil dus eigenlijk de boot-volgorde aanpassen, zodat Docker pas op het einde wordt gestart.
Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| #!/bin/sh # p1p1 = internal NIC # eth0 = WAN NIC lan_nic=p1p1 wan_nic=eth0 echo "Clear old firewall rules..." iptables --flush iptables --flush FORWARD iptables --flush INPUT iptables --flush OUTPUT iptables --table nat --flush iptables --table nat --delete-chain iptables --table mangle --flush iptables --table mangle --delete-chain iptables --delete-chain echo "Drop all INPUT and FORWARD..." iptables -P INPUT DROP iptables -P FORWARD DROP echo "Drop all IPv6 traffic..." ip6tables -P INPUT DROP ip6tables -P OUTPUT DROP ip6tables -P FORWARD DROP echo "Accept everything on lo and $lan_nic (local network)..." iptables -A INPUT -i lo -p all -j ACCEPT iptables -A OUTPUT -o lo -p all -j ACCEPT iptables -A INPUT -i docker0 -p all -j ACCEPT iptables -A OUTPUT -o docker0 -p all -j ACCEPT iptables -A INPUT -i $lan_nic -p all -j ACCEPT -s 192.168.1.0/24 iptables -A OUTPUT -o $lan_nic -p all -j ACCEPT -d 192.168.1.0/24 echo "IP Forwarding and Routing for gateway use..." iptables -A FORWARD -o $wan_nic -i $lan_nic -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o $wan_nic -j MASQUERADE echo "Maintain established connections..." iptables -A INPUT --in-interface $wan_nic --match conntrack --ctstate ESTABLISHED,RELATED --jump ACCEPT echo "Logging all dropped packets" iptables -N LOGGING iptables -A INPUT -j LOGGING iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4 iptables -A LOGGING -j DROP |