Tftp
為多個客戶端配置 tftp 伺服器
我正在使用 tftp 伺服器來保存開發板的引導映像,並且開發板經過硬編碼以查看伺服器的特定 IP 地址。這一切都很好。我現在想要做的是能夠設置第二個開發板來查看伺服器的相同 IP 地址,但獲得不同的啟動映像。我想通過讓 tftp 伺服器根據連接到它的客戶端的 IP 地址使用不同的根目錄來做到這一點。有沒有辦法做到這一點?
我意識到使用 iptables 可能有一些方法可以做到這一點,但是由於其他原因,我必須完全關閉伺服器電腦上的防火牆,所以這可能不太實用。
作為參考,我在伺服器上使用 Fedora 15,但如果需要可以更改。
DHCPD 與否?
你沒有說,但我假設你有一些 PXE 配置文件,這個 DEV 板設置要查找。通常,您會通過 DCHP 伺服器告訴 DHCP 客戶端使用什麼 PXE 映像:
subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.10 192.168.0.49; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option routers 192.168.0.1; filename "pxelinux.0"; next-server 192.168.0.100; }
TFTP 伺服器是
next-server 192.168.0.100
,要載入的文件是filename "pxelinux.0"
。但是由於您沒有此設置,因此您的開發板正在尋找特定 IP 地址的“下一個伺服器”,我將假設它也在尋找特定的 PXE 文件。使用 PXELINUX
該解決方案假設您可以控制將開發板指向特定的“文件名”,在這種情況下,我建議您使用PXELINUX,該文件將是
pxelinux.0
.PXELINUX 允許您根據系統的 MAC 地址自定義映像,這是更典型的方法,因為系統通常沒有以靜態方式分配給它們的實際 IP 地址,而 MAC 地址是靜態的。
設置
然後在 TFTP 伺服器的根目錄中創建如下內容:
/mybootdir/pxelinux.cfg/01-88-99-aa-bb-cc-dd /mybootdir/pxelinux.cfg/01-88-99-00-11-22-33 /mybootdir/pxelinux.cfg/default
上面的每個 MAC 地址都是一個文件,其中包含每個系統的相應引導節。這是我的Cobbler設置中的:
$ ls -l /tftpboot/pxelinux.cfg/ total 88 -rw-r--r-- 1 root root 292 Jul 9 2012 01-54-52-00-05-5a-ab -rw-r--r-- 1 root root 288 Jul 9 2012 01-54-52-00-17-a6-cd
連同一個範例文件:
$ more /tftpboot/pxelinux.cfg/01-54-52-00-05-5a-ab default linux prompt 0 timeout 1 label linux kernel /images/Centos56-x86_64/vmlinuz ipappend 2 append initrd=/images/Centos56-x86_64/initrd.img ksdevice=bootif lang= console=ttyS0,115200 text serial kssendmac ks=http://192.168.1.101/cblr/svc /op/ks/system/server123