설치하려고 하는데안개직장에서 학습 연습으로 Docker(Windows용 boot2docker를 통해)를 사용합니다. FOG에는 모든 것을 설치하고 Ubuntu 서버에서 잘 실행되는 편리한 작은 스크립트가 있지만 Docker에서 실행하는 데 문제가 있습니다.
FOG가 권장하는 버전인 Ubuntu 12.04를 사용했습니다. 모든 것이 잘 작동하는 것 같습니다. tftp localhost
컨테이너에 있는 파일을 사용할 수 있고 Windows 8.1 호스트(예: )에서 tftp를 사용하여 컨테이너에서 파일을 가져올 get
수 있지만 다른 시스템에서 동일한 작업을 수행하려고 하면 이제 나갈 시간이야.get
tftp 127.0.0.1 GET boot.txt
나는 다음을 시도했습니다 :
- boot2docker에서 UDP 포트 69를 엽니다(VirtualBox >
boot2docker-vm
> 설정 > 네트워크 > 포트 전달 > UDP 포트 69 추가를 통해)(0.0.0.0, 127.0.0.1 및 10.13.0.14와 같은 다양한 로컬 및 게스트 IP 주소를 사용해도 시도했지만 이는 시스템의 IP 주소입니다) )- 또한 Wireshark를 볼 때 TFTP 데이터에서 본 58162, 43595 및 59037을 포함한 여러 UDP 포트를 추가했습니다. 결론적으로 저는 Windows 8.1에서 상승된 권한과 상승되지 않은 권한으로 이 작업을 시도했습니다.
- Windows 8.1의 양쪽 끝에서 방화벽을 완전히 비활성화합니다.
- VirtualBox의 네트워크 유형을 브리지 모드로 설정합니다(이전과 같이 NAt로 돌아갑니다).
- Docker 내부에서 tcpdump를 사용하여 패킷이 원격 시스템에서 들어오는지 확인합니다. (그렇고 서버가 응답을 보내고 있지만 패킷이 컨테이너를 벗어나지 않습니다.)
- Wireshark를 사용하여 Windows 8.1에서 트래픽을 찾으세요. 원격 컴퓨터에서 오는 TFTP 데이터를 볼 수 있지만 원격 컴퓨터에 응답이 반환되지 않습니다.
- Ubuntu에 방화벽이 있는지 확인하십시오(아니요, Docker의 매우 간단한 버전입니다).
- 다른 컴퓨터에서 FOG의 웹 인터페이스에 액세스해 보았습니다. (잘 작동합니다. FOG에 새 이미지를 추가할 수 있습니다.)
- Docker의 빈 Ubuntu 설치에 TFTP 서버를 설치해 보십시오(예: FOG 설치 스크립트를 실행하지 않음). 아니면
- 내 이미지를 실행하여
-p 69:69/udp
포트 통과를 명시적으로 허용합니다. - UDP 포트 69를 명시적으로 노출하려면 iptables를 설치하십시오.
- 포트 69가 차단되었는지 확인하기 위해 작업 네트워크의 방화벽과 스위치를 확인했습니다. 차단되지 않았습니다(TFTP 트래픽이 Docker 호스트에 도달했기 때문).
- 나는 주인에게서 달렸다
tftp <ip address of another machine on the network running Wireshark> GET boot.txt
. TFTP 트래픽이 들어오는 것을 봅니다(그러나 TFTP 서버를 실행하지 않기 때문에 오류를 반환합니다). - 과거에는 FOG를 서버에서 실행했지만 나중에 이메일 서버 등에 더 많은 리소스를 제공하기 위해 폐기되었습니다.
- Ubuntu 14.04 랩탑에서 도커 이미지를 시도했는데(따라서 14.04를 호스트로 사용하고 도커 컨테이너를 게스트로 사용) 작동했기 때문에 문제는 Windows에 있는 것 같습니다. 여기서 어디로 가야 할지 잘 모르겠습니다.
따라서 문제는 TFTP 패킷이 Windows를 탈출하지 못하는 것 같습니다(그러나 HTTP 트래픽은 탈출합니다).
어떤 제안이 있으십니까?
답변1
마지막으로 Docker 이미지를 근처에 있는 Ubuntu 노트북으로 옮겼습니다. 이제 내 TFTP 서버는 수정 없이 완벽하게 실행되므로 문제는 Virtualbox, Windows 또는 boot2docker와 관련된 것이 거의 확실합니다(마지막 문제는 확실하지 않지만).
내 질문을 더 관련성이 높은 stackexchange에 게시할 예정이며(이제 도커 문제가 아니라는 것을 알고 있습니다) 답변을 얻으면 다른 사람들이 혜택을 받을 수 있도록 이 질문을 업데이트하겠습니다.