Skip to content

www.LinVirt.nl

PXE server - RedHat 6

auteur: Frederik Vos

Inleiding

Dit document beschrijft de installatie en configuratie van een PXE server onder Redhat 6.1. Het document is zowel geschikt voor Redhat 6.x, CentOS 6.x als Scientific Linux 6.x.

Ik ga in dit document uit van een minimale installatie van RedHat 6.1. Heb de setup zelf gebouwd op basis van Scientific Linux 6.1, minimale installatie (@core), uiteraard voorzien van de laatste updates.

De bedoeling is dat er een PXE server gebouwd wordt waarmee we allerlei Linux distributies, maar ook VMware en Xenserver installaties mee kunnen uitrollen. Dit document bespreekt alleen maar de configuratie van de PXE server zelf, in andere documenten ga ik in op de configuratie van datgene wat je via PXE wilt aanbieden.

Benodigdheden

Een PXE server bestaat uit een dhcp server (ik kies hier voor dnsmasq) en tftp server (ik kies hier voor tftpd). Daarnaast heb je minimaal een webserver of nfs server nodig om de installatie software aan te kunnen bieden. Verder kan een ftp server handig zijn. Aangezien dit document de basis moet vormen voor de uitrollen van allerlei omgevingen gaan we zowel een web-server, ftp-server als nfs-server installeren.

yum groupinstall "Web Server"
yum groupinstall "NFS file server"
yum groupinstall "FTP server"
yum install dnsmasq tftp tftp-server syslinux-tftpboot

Sommigen prefereren een aantal taken 'grafisch' te doen, in dat geval kun je de voor de netwerk en firewall configuratie de volgende pakketten installeren:

yum install system-config-network-tui systemconfig-firewall-tui 

Configuratie - Web server

Aan de webserver hoeft niet veel geconfigureerd te worden: je moet de server starten, zorgen dat dit steeds bij het booten ook gebeurd.

service httpd start
chkconfig httpd on

Ook moet de firewall geconfigureerd worden zodat tcp poort 80 open staat:

iptables --insert INPUT --match state --state new \
--proto tcp --dport 80 --jump ACCEPT

service iptables save

Configuratie NFS Server

Ook de NFS server moet gestart worden, en toegevoegd worden aan het bootproces van de server:

chkconfig nfs on
chkconfig rpcbind on
chkconfig nfslock on
service rpcbind start
service nfs start
service nfslock start

De firewall configuratie is iets ingewikkelder, allereerst moet je de NFS server vertellen welke poorten gebruikt moeten gaan worden. Dit doe je in het bestand /etc/sysconfig/nfs, door het commentaar teken voor de volgende regels te verwijderen:

RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020

En hierna de nfs server te herstarten:

service nfs restart

Vervolgens kun je firewall rules aanmaken:

iptables --insert INPUT --match state --state new \
--match multiport --proto tcp --dport 111,662,875,892,2049,32803 \
--jump ACCEPT

iptables --insert INPUT --match state --state new \
--match multiport --proto udp --dport 111,662,875,892,2049,32769 \
--jump ACCEPT

service iptables save

Ook SELinux moet verteld worden dat je NFS gebruikt:

setsebool -P nfs_export_all_rw 1

De NFS server maakt gebruik van zogenaamde tcp wrappers voor access control. Dat houdt in dat je in het bestand /etc/hosts.allow de volgende regels moet opnemen:

portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

Uiteraard kun je in plaats van ALL ook een ip adres of ipranges opgeven.

Configuratie FTP Server

Redhat gebruikt vsftpd, met het bijbehorende configuratie bestand /etc/vsftpd/vsftpd.conf. Hierin hoeven in principe geen configuratie wijzigingen te gebeuren: bij een deployment server volstaat anonymous ftp (inloggen op een ftp server zonder dat hiervoor een gebruikersnaam en wachtwoord vereist zijn).

Starten van vsftpd en toevoegen aan het bootproces:

chkconfig vsftpd on
service vsftpd start

Firewall aanpassen:

iptables --insert INPUT --match state --state new \
--proto tcp --dport 21 --jump ACCEPT

service iptables save

Verder moet het bestand /etc/sysconfig/iptables-config aangepast worden:

IPTABLES_MODULES="nf_conntrack_ftp"

De firewall moet nu geherstart worden:

service iptables restart

Configuratie TFTP Server

De tftp-server draait niet stand-alone, maar maakt gebruik van Xinetd. Om de tftp-server in gebruik te nemen moet je eerst de service enablen door in het bestand: /etc/xinetd.d/tftp, de parameter: disable de parameter no mee te geven in plaats van de default yes. Ook moet de directory aangepast worden waar de bestanden staan:

server_args = -s /tftpboot

Xinetd zelf in gebruik nemen:

chkconfig xinetd on
service xinetd start

Firewall configuratie:

iptables --insert INPUT --match state --state new \
--proto udp --dport 69 --jump ACCEPT

service iptables save

Net zoals NFS maakt de tftp-server gebruik van tcpwrappers. Voeg aan het bestand /etc/hosts.allow de regel toe:

tftpd:ALL

Ook nu moet het bestand /etc/sysconfig/iptables-config aangepast worden:

IPTABLES_MODULES="nf_conntrack_ftp nf_conntrack_tftp"

De firewall moet opnieuw geherstart worden:

service iptables restart

Configuratie DHCP Server

Dnsmasq wordt gebruikt als dhcp server, ik ga in dit document verder niet op de dns en dhcp specifieke zaken, maar beperk me tot wat nodig is voor PXE boot. Zorg voor de volgende opties in /etc/dnsmasq.conf:

dhcp-option-force=208,f1:00:74:7e
dhcp-boot:pxelinux.0,boothost,192.168.0.1

Het ip adres in de tweede regel is het ip adres van deze deployment server.

Dnsmasq in gebruik nemen:

chkconfig dnsmasq on
service dnsmasq start

Firewall configuratie:

iptables --insert INPUT --match state --state new \
--proto udp --dport 67 --jump ACCEPT

service iptables save

Finish

De deployment server is klaar voor gebruik !