docker - docker端口映射不转发流量
问题描述
我尝试使用这个容器:https ://hub.docker.com/r/tiredofit/freepbx/
为此,我创建了这个撰写文件:
https://pastebin.com/CkL1y0jd
我已将端口 80 代理到我的内部 IP 172.20.0.45。这很好用。但是从外部无法访问端口 5160。
在我的 Docker 主机上,我跑过
ngrep -W byline -d eno1 port 5160
这给了我以下输出:
U 192.168.30.22:54194 -> 192.168.50.20:5160
REGISTER sip:pbx.UsualyMyDomain.ch:5160;transport=UDP SIP/2.0.
Via: SIP/2.0/UDP 212.XX.XX.XXX:54194;branch=z9hG4bK-524287-1---9bb8a42e6116af86;rport.
Max-Forwards: 70.
Contact: <sip:120@212.XXX.XXX.XXX:54194;rinstance=c4ebbf8b0a8fd276;transport=UDP>.
To: "4141XXXXXXX"<sip:120@pbx.UsualyMyDomain.ch:5160;transport=UDP>.
From: "4141XXXXXXX"<sip:120@pbx.UsualyMyDomain.ch:5160;transport=UDP>;tag=b4afdd24.
Call-ID: uXyh0WASXl2Cpp3oD0RYtw...
CSeq: 2 REGISTER.
Expires: 60.
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE.
User-Agent: Zoiper rv2.9.RC37-15-g9fc1f76ee4.
Allow-Events: presence, kpml, talk.
Content-Length: 0.
但是,如果我在容器内运行上述命令,则根本不会收到任何数据包:
ngrep -W byline -d eno1 port 5160
interface: eno1 (172.20.0.0/255.255.255.0)
filter: (ip or ip6) and ( port 5160 )
那么我现在必须在哪里搜索问题?
netstats -tln
显示:
tcp6 0 0 :::5160 :::* LISTEN 13316/docker-proxy
但是没有UDP6或UDP。
这可能是问题吗?
提前致谢
解决方案
问题解决了!
对于所有发现类似问题的人。阅读:http ://bhashitparikh.com/2016/02/03/when-port-forwarding-didnt-work-in-docker.html
问题之一是您必须在 SIP-CHAN 设置下插入您的 Docker IP 作为绑定地址。然后还使用 static-ip 并输入您的 docker ip。
最后但同样重要的是,将其添加到撰写文件中:
- 5160:5160/udp
- 5060:5060/udp
否则只会监听 tcp 流量!现在它可以工作了:)
推荐阅读
- python - 带有 matplotlib Canvas 的 Tkinter 应用程序拒绝停止
- html - 使用 html 和 CSS 在网格中排列图像
- python-3.x - 如何计算 dajngo-SafeDeleteModel
- ios - ios中的组动画
- html - 由 2 个带边距和旋转的跨度组成的比例箭头
- javascript - Redis 输出的是 true 而不是期望的值
- vue.js - Vue.js;如何获取另一个框架使用的 cookie?
- php - nginx php-fpm 502 错误网关
- c# - Unity检查碰撞器是否是生成的预制件的类型
- excel - 如何使用员工 ID 作为标识符将多个工作表中的数据复制到一个工作表中