Service start volgorde aanpassen tijdens boot

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • smeerbartje
  • Registratie: September 2006
  • Laatst online: 12:51
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.


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

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 15:03

Hero of Time

Moderator LNX

There is only one Legend

Wat heb je zelf al gevonden? Waar heb je op gezocht? Wat heb je nog meer gedaan om je probleem op te lossen of te begrijpen wat er nou gebeurt en vooral waarom het gebeurt?

We kunnen je wel het antwoord voorkauwen, maar hier op Tweakers verwachten we nog steeds eigen inzet en die is nu volledig afwezig. Met 3000 reacties en 8,5 jaar hier rondlopen had je dit zo onderhand wel moeten weten. Er is genoeg documentatie te vinden over 't boot proces en volgorde van services die starten met het OS. Mogelijk dat je een paar over systemd gaat krijgen in je resultaten, maar je zit met Ubuntu 14.04 nog op sysv-init en de hoeveelheid resultaten daarvan is veel groter.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 10:20

CAPSLOCK2000

zie teletekst pagina 888

Geen rc.local gebruiken. Die komt altijd als laatste. Maak er een "echt" init-scriptje voor en laat het start-script van docker daar een dependency op maken. Zie /etc/init.d/skeleton voor een voorbeeld.

This post is warranted for the full amount you paid me for it.