登录
  • 人们都希望被别人需要 却往往事与愿违
  • Java与JavaScript的关系, 如同雷锋与雷峰塔的关系。

什么鬼啊,我的容器怎么无法访问外网了

不懂编程 Benny小土豆 1939次浏览 710字 3个评论

大概几个星期前,在把YYeTs Bot迁移到香港时,发现在容器里竟然无法访问外部网络。

由于之前看到有报道称香港的某些ISP对某域名进行了污染,因此此时就立刻想到了,是不是aws的上游也对 api.telegram.org 进行了污染?

容器里没法curlapk update了一下,发现竟然无法update,难道是alpine挂了吗?Ubuntu也是,这俩一起炸?概率太低了吧。新加坡的那台机器也是同样的问题,但是日本就没问题。同样都在亚洲,大家有什么差别吗?难道是整个东南亚的海底光缆全炸了?可是没见到有人说东南亚的机房炸了啊,况且就算炸了,那也应该会找别的路由出去啊,就算丢包也不会直接炸光啊。

什么鬼啊,我的容器怎么无法访问外网了

就算你是柯蒂斯·李梅,手里有着一百架B-2轰炸机,也不能炸的这么彻底啊。

试了一下,宿主机能够访问啊,那就是没问题的。一定是某些配置不对。重新安装了docker engine,结果也还一样,香港和新加坡的机器就是不好用,但是日本可用。


搜了一下,可能是没开ipv4.forward?但是我一般是开启这个的呀,而且我开了啊……

后来在网上翻到这样一篇文章,《Docker容器无法连接外部网络原因排查》,了解到bridge网络docker是通过iptables转发流量的。

此时,我突然意识到,我的这两台服务器似乎都设置了大量的本地端口转发,恰巧也覆盖了80和443这两个端口……把这个规则删掉,重启docker engine。好的,村通网了。

罪魁祸首的这条命令

iptables -t nat -A PREROUTING -p tcp --dport 23:1000 -j REDIRECT --to-ports 16698

事实证明,是我的想象力太丰富了。来一拳就好了。

什么鬼啊,我的容器怎么无法访问外网了


文章版权归原作者所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明原作者和本文原始地址:
https://dmesg.app/container-no-network.html
喜欢 (35)
分享:-)
Benny小土豆
关于作者:
If you have any further questions, feel free to contact me in English or Chinese.
发表我的评论(代码和日志请使用Pastebin或Gist)
取消评论

                     

去你妹的实名制!

  • 昵称 (必填)
  • 邮箱 (必填,不要邮件提醒可以随便写)
  • 网址 (选填)
(3)个小伙伴在吐槽
  1. 看到这一篇突然很感慨。 大概数年前本科的时候,我学的还是硬件设计,看到博主一篇关于自建梯子的博文,当时很感兴趣就按着教程开始摸索,谁知一发不可收拾。现在一边在伦敦IBM工作一边读博,不过不得不感叹,就是那么奇妙的一次点击就大体改变了很多年的生活轨迹,虽然说不上喜欢现在的生活,但是确实见到了很多新东西。 谢谢。
    MG2021-02-02 08:17 回复
    • Benny小土豆
      😃😃😃 难道因为那一篇而改变了你的人生轨迹?哇塞
      --本评论由Telegram Bot回复~❤️
      Benny小土豆2021-02-02 09:31 回复
    • 梯子改变人生
      Ben2021-02-09 19:00 回复