Ten blog nie jest już rozwijany. Wraz ze wszystkimi artykułami zostały przeniesiony pod adres wmroczkowski.pl

Czy chcesz przejść pod nowy adres?

poniedziałek, 4 sierpnia 2008

Budujemy panel w PHP do zarządzania adresami sieci w Linux w oparciu o edycję pliku /etc/network/interfaces

Dzisiaj zajmiemy się budową panelu w PHP, który poprzez proste wpisywanie adresów w pola tekstowe będzie nam edytował plik /etc/network/interfaces po czym zrestartuje automatycznie sieć. Jest to bardzo przydatne jeżeli ktoś zarządza serwerem bądź ruterem na linuxie i zamiast łączyć się przez SSH po prostu loguje się na stronę jako admin lub ktokolwiek i tam swobodnie i bez przeszkód wpisuje swoje ustawienia sieci. Całość tłumacze w oparciu o Debiana.
Zaczynając pisać kod w PHP, który wykonuje pewne polecenia przez przez konsole należy zaznajomić się z prawami dostępu w linuxie. Jak wiadomo domyślnie wszelkie skrypty linuxa, które służą do edycji systemowych ustawień należą do właściciela i grupy root. Niestety (albo stety) nie możemy (nie chcemy) uruchomić serwera apachea jako root ponieważ jest to wysoce ryzykowne dla naszego serwera. W standardzie apache uruchamia wszelkie skrypty jako użytkownik www-data lub po prostu 33. Dlatego właśnie musimy zmienić właściciela oraz grupę wszystkich plików które będą przez nas używane na www-data.
Oto lista plików, których właścicieli musimy zmienić poleceniami: chown www-data [plik] oraz chgrp www-data [plik]:
1. /etc/network/interfaces
2. /etc/init.d/networking
3. /etc/network/run/ifstate

Ok, jeżeli mamy już zmienione uprawnienia możemy zabrać się za nasz panel, ale najpierw rzućmy okiem na nasz plik /etc/network/interfaces. U mnie wygląda on tak:
auto lo
iface lo inet loopback
up ip l s imq0 up && ip l s imq1 up
auto eth0
iface eth0 inet static
address 212.244.101.111
netmask 255.255.255.53
network 10.5.1.0
broadcast 10.5.1.10
gateway 10.5.1.1
up echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
auto eth1
iface eth1 inet static
address 212.244.101.129
netmask 255.255.255.128
network 212.244.101.128
broadcast 212.244.101.255
up route add -host 212.244.101.244 dev eth1
auto eth1:1
iface eth1:1 inet static
address 10.10.1.1
netmask 255.255.0.0
network 10.10.1.1
broadcast 10.10.1.255
auto eth1:0
iface eth1:0 inet static
address 172.16.171.1
netmask 255.255.255.0
network 172.16.171.0
broadcast 172.16.171.255


Tutaj każdy będzie musiał się wykazać inicjatywą i zbudować własny kod PHP pod swój plik interfaces.
Aby zbudować panel będziemy musieli utworzyć dla pliki PHP: panel.php i panel_edit.php.
Tak mniej więcej będzie wyglądał plik panel.php:


A tak będzie wyglądał nasz plik panel_edit.php:


Wszelkie szczegóły starałem się umieścić w kodzie w komentarzach. Kod nie jest skomplikowany, więc myślę że każdy sobie poradzi z jego zrozumieniem. W razie problemów proszę pisać w komentarzach - postaram się rozwiać wszelkie wątpliwości.

Brak komentarzy: