Calm Hill My Random Thoughts

DHCPD & AppArmor

ရုံးမှာသုံးတဲ့ File Server က Ubuntu က မအားတာနဲ့ Upgrade ကလည်းမလုပ်ဖြစ် မလုပ်ဖြစ်နဲ့ Support တောင်မရှိတော့တဲ့ အချိန်ရောက်မှပဲ မလုပ်မဖြစ်အနေနဲ့ Upgrade လုပ်လိုက်ရတယ် Upgrade နဲ့အတူမဖြစ်မနေပါလာတာက Error ပဲ Configuration File တွေနေရာပြောင်းသွား Service တွေကမတက် DNS တွေပျောက် စုံစီနဖာပြဿနာရှင်းပြီးတဲ့နောက် ညလည်း ၁၂ ထိုးတော့ အိမ်ပြန်ရပြီဆိုပြီး စိတ်ချလက်ချအိပ် မနက်လည်းနောက်ကျမှ ရုံးလာပေါ့လေ။

ရုံးရောက်တော့ မနေနိုင်မထိုင်နိုင် Server ကိုဖွင့်ကြည့်မိတော့ isc-dhcp-server ကို Update တွေ့တာနဲ့ နောက်လည်းမလုပ်ဖြစ်မယ့်အတူတူဆိုပြီး Update လုပ်လိုက်မိတာ Update လည်းပြီးရော dhcp server လည်း ပြန်မတက်လာတော့ဘူး။ dhcp server လည်းမရှိရော Default IP တွေနဲ့တက်ကုန်ကြတော့ Network တွေလွဲ Network Drive တွေလည်း Access လုပ်မရ တစ်ရုံးလုံးပူညံပူညံလုပ်ရော တကယ်ကတော့ အလုပ်လုပ်လို့မရတာထက် Gateway တွေမသိတော့ Internet လည်းမရ Facebook ဝင်လို့မရတာက အဓိကဖြစ်လိမ့်မယ်။

အခုမှထွက်တဲ့ Update ဆိုတော့ Error တက်တာလည်း အော်ကြဟစ်ကြတာမရှိသေးတော့ ဘယ်လိုလည်းရှာရမှန်းမသိ။ သဲလွန်စရမလားလို့ syslog ကိုဖွင့်ကြည့်လိုက်တော့

dhcpd: Open a socket for LPF: Permission denied
kernel: [47019.584280] type=1400 audit(1366685114.741:34): apparmor="DENIED" operation="create" parent=1 profile="/usr/sbin/dhcpd" pid=13533 comm="dhcpd" family="packet" sock_type="raw" protocol=768

အဲလိုတွေ့တော့ တစ်နေရာမှာတော့ apparmor ကပြဿနာလုပ်နေတယ် comm=”dhcpd” family=”packet” sock_type=”raw” ဆိုတော့ dhcpd က raw packet သုံးတာကို apparmor က deny လုပ်တယ်ဆိုတော့ dhcpd အတွက် apparmor rules တွေထဲမှာ raw packet မပေးထားတာဖြစ်နိုင်တယ်။ အဲဒါနဲ့ /etc/apparmor.d/usr.sbin.dhcpd ကိုဖွင့်ကြည့်တော့ inet raw ပဲတွေ့တယ် packet raw မတွေ့ဘူး။

...
network inet raw,
network packet packet,
@{PROC}/[0-9]*/net/dev r,
@{PROC}/[0-9]*/net/{dev,if_inet6} r,
...

သေချာအောင်တော့ ထပ်ရှာဦးမယ်ဆိုပြီးရှာကြည့်တော့ isc-dhcp-server 4.2.4 က မထွက်သေးတဲ့ Ubuntu 13.04 (alpha) မှာက Bugs အနေနဲ့ Submit လုပ်ပြီးနေပြီ။ အဲဒီမှာလည်း packet raw ထည့်ရင်ရမယ်ဆိုတော့ သေချာပြီဆိုပြီး usr.sbin.dhcpd ကိုပြင် apparmor ကို reload လုပ်ပြီးတော့ isc-dhcp-server ကို Start လုပ်ကြည့်တော့ Error မရှိတော့ဘူး။

...
network inet raw,
network packet raw,
network packet packet,
@{PROC}/[0-9]*/net/dev r,
@{PROC}/[0-9]*/net/{dev,if_inet6} r,
...