네트워킹이 포함된 Docker 컨테이너에서 트래픽을 전달할 수 없는 몇 가지 기본적인 개념적 문제가 있습니다.
Docker 컨테이너가 2123/udp를 수신하고 있습니다.
방법 0 모든 주장을 게시하는 것이 작동하지 않는 것 같습니다. 이 명령 전후에는 iptables에 매핑/변경 사항이 없습니다.
docker run -d -P image
https://docs.docker.com/v17.09/engine/userguide/networking/default_network/bind/
방법 1 모든 인터페이스/IP/포트에서 Docker 컨테이너로 트래픽을 보내고 싶습니다. 내 트래픽의 대부분은 eno1, ip = xxxx 및 포트 22에서 발생합니다. 나는이 포트 22를 사용하여 도커에 바인딩하려고했습니다.
docker run -d -p 22:2123 image
As the port is active so it could not bind with port 22
방법 2 임의의 포트 80을 선택하여 게시해 보았습니다.
docker run -d -p x.x.x.x:80:2123
오류가 인쇄되지 않습니다. 그런데 이 IP와 포트로 패킷을 보내면 연결이 거부됩니다.
Packets sent as follows.
dd if=/dev/zero bs=9000 count=1000 > /dev/tcp/x.x.x.x/80
따라서 포트 22에서 수신된 모든 트래픽을 xxxx:80으로 전달하도록 포트 전달 규칙을 추가했습니다.
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination x.x.x.x:80
여전히 연결이 거부되었습니다. 연결이 거부됐는데도 2건의 거래를 봤어요
tcpdump -i any port 2123
IP <dockerNWip>.37042 > <host>.2123: Flags [S], seq 1289990254, win 29200, options [mss 1460,sackOK,TS val 437161 ecr 0,nop,wscale 7], length 0
IP <dockerNWip>.37042 > <host>.2123: Flags [S], seq 1289990254, win 29200, options [mss 1460,sackOK,TS val 437161 ecr 0,nop,wscale 7], length 0
IP <host>.2123 > <dockerNWip>.37042: Flags [R.], seq 0, ack 1289990255, win 0, length 0
IP <host>.2123 > <dockerNWip>.37042: Flags [R.], seq 0, ack 1, win 0, length 0
문제가 어디에 있는지 잘 모르겠습니다. 내 질문
1) Do i need to bind x.x.x.x and port 80? I thought the rule would do that.
2) Do i need anything else besides the publishing the ports?
3) Is my way to tcpdumping the port correct to monitor the traffic?
내 전략/가정은 바인딩 호스트 포트 80을 컨테이너 포트 2123과 자동으로 트래픽을 라우팅해야 한다는 것입니다.