Sunday, January 19, 2025

Cách tạo 1 image Docker TFTP đơn giản

-

1. Tạo Dockerfile

File cấu hình phải được mở để chỉnh sửa. Đây là cấu hình mặc định của máy chủ TFTP.

Ở đây, TFTP_USERNAME được đặt thành tftp . Nó có nghĩa là máy chủ TFTP sẽ chạy với tư cách là tftp của người dùng .

TFTP_DIRECTORY được đặt thành /var/lib/tftpboot. Nó có nghĩa là /var/tftpboot là thư mục trên máy chủ này mà bạn có thể truy cập qua TFTP.

TFTP_ADDRESS được đặt thành : 69 và nó có nghĩa là TFTP sẽ chạy trên cổng 69 .

TFTP_OPTIONS được đặt thành –secure . Biến này đặt các tùy chọn TFTP. Có nhiều tùy chọn mà bạn có thể sử dụng để định cấu hình cách máy chủ TFTP sẽ hoạt động. Tùy chọn –secure có nghĩa là thay đổi thư mục TFTP thành thư mục được đặt trên biến TFTP_DIRECTORY khi bạn tự động kết nối với máy chủ TFTP. Đây là một tính năng bảo mật. Nếu bạn chưa đặt tùy chọn –secure , thì bạn sẽ phải kết nối với máy chủ TFTP và đặt thư mục theo cách thủ công. Đó là rất nhiều rắc rối và rất không an toàn.

Bây giờ, mình chỉ muốn thay đổi TFTP_DIRECTORY thành /var/tftpboot và thêm tùy chọn –create vào TFTP_OPTIONS . Nếu không có tùy chọn –create , bạn sẽ không thể tạo hoặc tải các file mới lên máy chủ TFTP. Bạn sẽ chỉ có thể cập nhật các file hiện có. Vì vậy, mình nghĩ tùy chọn –create rất quan trọng.

cat > Dockerfile << OEF
FROM ubuntu:20.04
RUN apt update
RUN apt install -y systemctl vim tftpd-hpa
RUN echo 'TFTP_USERNAME="tftp"' > /etc/default/tftpd-hpa
RUN echo 'TFTP_DIRECTORY="/var/tftpboot"' >> /etc/default/tftpd-hpa
RUN echo 'TFTP_ADDRESS=":69"' >> /etc/default/tftpd-hpa
RUN echo 'TFTP_OPTIONS="--secure --create"' >> /etc/default/tftpd-hpa
RUN mkdir /var/tftpboot && chown tftp:tftp /var/tftpboot

EXPOSE 69/udp

WORKDIR /var/tftpboot

ENTRYPOINT ["systemctl", "start"]
CMD ["tftpd-hpa"]
OEF

2. Build Docker image

docker build -t tftpd:ver1 --force-rm -f Dockerfile .

3. Hãy run Docker image này thử

docker run -p 69:69/udp -v /var/tftpboot:/var/tftpboot --name=tftp-server -it tftpd:ver1

Chúng ta có 1 container mới tên tftp-server đã được chạy

$ docker ps
CONTAINER ID   IMAGE                     COMMAND                  CREATED          STATUS          PORTS                                                                                NAMES
fad88c0f4af0   tftpd:ver1                "systemctl start tft…"   23 seconds ago   Up 23 seconds   0.0.0.0:69->69/udp, :::69->69/udp                                                    tftp-server

Chúng ta có kết quả port 69 của TFTP server đã listen

$ netstat -ulnp | grep 69
udp        0      0 0.0.0.0:69              0.0.0.0:*                           96871/docker-proxy
udp6       0      0 :::69                   :::*                                96877/docker-proxy

Nếu bạn không muốn chạy Docker thì hãy cài tftpd-hpa theo các bước dưới đây

1. Update hệ thống

apt update

2. Cài đặt tftpd-hpa

apt install tftpd-hpa -y

3. Sửa config

cat > /etc/default/tftpd-hpa << OEF
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create"
OEF

4. Hãy tạo thư mục TFTP

mkdir /var/tftpboot

5. Phân quyền thư mục TFTP

chown tftp:tftp /var/tftpboot

6. Khởi động tftpd-hpa

systemctl start tftpd-hpa
systemctl status tftpd-hpa
systemctl enable tftpd-hpa

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories