MoreRSS

site iconJustin Yan | 枫影修改

苹果开发者,也是枫言枫语播客的主播。白天在微信打工负责视频号客户端团队,晚上鼓捣个人爱好。中文播客榜作者。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Justin Yan | 枫影的 RSS 预览

从 Docker 无网络问题到 ip_forward()

2025-12-12 20:06:39

最近有一个docker container在部署的时候好好的,跑了一阵子发现他好像连不出去外网。一开始怀疑是container内的逻辑问题,排查了一通发现并不是。因为网络请求使用的是域名,报错跟getaddrinfo相关,于是又怀疑是DNS问题。

于是进入docker container内进行Debug

docker exec -it <container-name-or-id> /bin/bash
ping 8.8.8.8 # timeout
curl http://example.com # failed

在contaienr中尝试ping与curl均失败,所以肯定是container网络不通的问题。

开始检查docker-compose yml文件,确认network是否存在:\

docker network inspect <network-name>

检查network也是存在的,删除重建,问题依然存在。有点麻烦。

1. Docker的默认网络模型

本图使用Nano Banana Pro生成

  • NAT (iptables MASQUERADE) is omitted for simplicity*

可以看到container中的网络请求,会通过docker内的eth0通过veth转发到host machine的docker0 bridge network。接着在forward到host machine的eth0,最终把请求发出去。

所以现在container中发不了请求,但host machine网络通畅,有可能是ip forwarding没打开。

sysctl net.ipv4.ip_forward
// net.ipv4.ip_forward = 0

确认问题是Linux内核的ip forwarding被关了。手动打开ip forwarding

sudo sysctl -w net.ipv4.ip_forward=1

再尝试从container中发送请求,一切正常,problem sovled!

2. 谁把IP Forwarding关闭了?

不少云服务厂商提供的主机都会自带一些安全功能,可能会主动关闭IP Forwarding,我们可以检查一下sysctl的配置:

/etc/sysctl.conf
/etc/sysctl.d/*.conf

我发现/etc/sysctl.conf中有net.ipv4.ip_forward = 0的配置。这样的话,只要机器重启,ip forwarding还是会被自动关闭。

所以我们还需要手动将这些配置文件修改,可以将对应行注释掉。

3. sysctl

经常使用macOS的小伙伴们对sysctl这个工具一定不陌生,这是从BSD时代就有的东西,Linux的sysctl设计理念也是源自BSD Unix。macOS的XNU内核里就包含了BSD内核代码(Mach+BSD),所以在macOS上查看ip forwarding可以这样:

sysctl net.inet.ip.forwarding
# net.inet.ip.forwarding: 1

无论BSD还是Linux内核,这个sysctl工具都只是一个内核配置的读写工具。

那么Linux内核中真正执行ip forwarding的地方在哪里呢?让我们打开Linux源码仓库👉https://github.com/torvalds/linux

上面说过sysctl只是读写配置,其实它也是由多个部分组成,我们在terminal直接操作的sysctl命令多是由用户态工具提供的,标准Linux发行版都有。至于内核,则由各个子系统自行读取对应的配置。

具体到ip forwarding这个例子,我们需要看net子系统。最终的ip forwarding逻辑的代码在net/ipv4/ip_forward.c,其中的int ip_forward(struct sk_buff *skb)函数就是把包转发到下一跳的逻辑。里面进行了大量的检查,最终执行forward,但是这个函数本身并不检查sysctl配置,所以我们且按下不表。

真正检查配置并执行该方法的地方,位于net/ipv4/route.c文件中。在这个函数:

static enum skb_drop_reason
ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,
            dscp_t dscp, struct net_device *dev,
            struct fib_result *res)

使用IN_DEV_FORWARD(in_dev)来判断是否开启了ip forwarding。如果没有开启,会走到goto no_route,如果开启,则走到goto make_route

no_route处理就很简单,把返回值置为RTN_UNREACHABLE,告诉上层此路不通,对应我们在docker container中的现象就是无网络。

make_route会调用如下函数:

static struct rtable *__mkroute_output(const struct fib_result *res,
                       const struct flowi4 *fl4, int orig_oif,
                       struct net_device *dev_out,
                       unsigned int flags)

然后把包转发给下一跳,这个函数里使用一个struct rtable记录ip_forward这个函数指针,最后在net/ipv4/ip_input.cip_rcv_finish()函数中,使用dst_input(skb)真正调用到ip_forward()这个函数。

rtable是Linux内核中常见的一个设计,把数据和行为封装到一个struct里面,后续执行的流程不需要做if-else判断,只需要统一使用调度方法即可。

dst_input(skb);
dst_output(net, sk, skb);

在我们排查的这个case中,我们只关注ip_forward。但是在net子系统中,该设计还能扩展支持ip_local_deliver, ip6_input, xfrm_input等等功能。很有意思。

4. What's next?

本来我查到docker container无网络,只要执行sudo sysctl -w net.ipv4.ip_forward=1就能临时解决这个问题了。但是研究了一下发现原来还有文件配置项,规避了系统重启让我的docker container再次无网络的问题。

顺便因为发现sysctl有点意思,就进一步研究Linux源码,发现它的设计与XNU有些相似又有很大不通。如今Linux内核已经是一个非常庞大的代码库,XNU其实也是的。rtablesysctl的设计能很好地在多个子系统之间解耦,提供很高的可扩展性。当然,如果我们在一个足够简单的项目里是没必要使用这种级别的设计的,反而会引入更高的理解成本,造成过度设计。

但了解内核的代码总能带来新的惊喜,蛮有趣的。以前我阅读XNU源码的时候,只能通用我人工手动一点点搜索代码,判断调用入口与调用链来理解。现在有强大的LLM,这个过程快了很多。AI时代,阅读内核代码将变得无比简单。

Vol. 155 Stay hungry. Stay foolish.

2025-12-08 12:54:13

哈喽大家好,又是好久不见的一期。事实上我台两位主播最近都在经历能量的低谷,或者说时间上的不充裕。所幸在我们复盘我台的节目策划的过程中,两位主播又重新获得了能量,开始了新一期节目的录制。

本期节目具有比较大的偶然性,我们本来规划要聊最近玩的几个有趣的硬件,但没想到麦克风一打开,画风就飘到了十里开外。我们很默契地都没有把话题拉回来,就任由它飞吧,有多远飞多远。

事实上在我们一起录制播客的初期,我们就是这样随性聊天的,只是后来成了一些系列节目之后,反而受到了制约。我台的豪华制作阵容一直就只有我们两个,再加上帮我们做剪辑的后期小姐姐静静算2.5人,这样的规模是没办法和专业团队比较的。我们没有节目策划,没有节目审校,也没有规划。我们平时都有自己要忙的事情,更没空进行集中的运营。

所以做播客对我们来说意味着什么?我们为什么喜欢做播客?我们为什么要一直录播客?过去几年,我们关注的话题从苹果,到读书,到邀请世界各地的科技从业者,到独立开发者,到AI,既跟我们个人的趣味,也跟世界的趋势息息相关。做播客,跟人聊天本身就是件挺有意思的事情。

虽然我(Justin)不太认为听播客能严肃地学到什么东西,但是听不同的人讲述跟我完全不同的视角,这本身即使一个颇具启发的过程。能够从中获得一些灵感,从而开启一场深入的思考,这样就很不错。

除了我们两位主播的能量低谷与时间贫困,我认为还有我们随着对既定议题的了解程度逐渐深入,好奇心在逐渐降低。现在我明白,不一定是对一件事情一无所知才能好奇。当我们逐渐了解一个行业,一个社会议题,一个群体之后,我们仍然能好奇每个人的不同点。这也许是我们最近讨论下来能重获好奇的一点。但具体是否符合预期,也得先试试。行动起来,我们将会发现,这个世界能让人产生好奇的还有无数个方向无数种人生。

Stay hungry. Stay foolish.

时间轴

  • 00:00:00 开场
  • 00:00:06 近期的拖更请听我狡辩
  • 00:05:32 关于视频播客
  • 00:08:22 播客热门话题从科技到商业、个人成长等
  • 00:12:17 心理学与自我成长的兴起
  • 00:20:10 小宇宙日活怎么算?
  • 00:27:50 当下人们的职业焦虑与意义追寻
  • 00:35:49 创业与独立开发的视角
  • 00:39:53 自我探索已日渐普及
  • 00:57:14 经济周期与春夏秋冬
  • 01:01:36 如何寻找“我想要”,王晚《送外卖》
  • 01:10:07 什么是向内,什么是向外
  • 01:16:42 工作与倦怠,如何寻找新时代的榜样
  • 01:29:34 行动会带来蝴蝶效应
  • 01:31:19 本期节目内容是个偶然
  • 01:37:01 祝大家身体健康,我们下期再会

相关链接

幕后制作

联系我们

节目收听方式

推荐使用苹果Podcast, 小宇宙等播客客户端搜索“枫言枫语”来订阅收听本节目。

Vol. 154 科技快乐星球40:家务机器人来了?AI 浏览器井喷,大语言模型继续进化

2025-11-09 22:35:25

甚是想念之二😂

这期节目录制的时候NEO刚发布,结果现在又来个小鹏机器人,最近大家都开始卷机器人领域了,不错不错。

p.s. 节目录制时NEO机器人刚刚发布,次日MKBHD频道的视频介绍,该机器人演示视频为真人动作捕捉远程操作,并非实机演示,且交货日期是明年的某个未知时间。与该机器人发布视频令人兴奋之对比,这个真相未免有点残酷。

时间轴

00:00:28 人形家务机器人 1X NEO 预售,约15万元
00:02:02 机器人续航4小时,外形可能引发“恐怖谷效应”
00:05:33 机器人联网与隐私担忧,离线模型的重要性
00:10:52 机器人将替代重复性劳动,人类专注情感服务
00:14:50 OpenAI 进军音乐模型,挑战 Suno AI
00:24:51 OpenAI 推出 AI 浏览器 Atlas
00:32:28 Firefox 测试免费内置 VPN,主打隐私安全
00:34:06 Chrome 将加入原生垂直标签页功能
00:35:42 微软与 OpenAI 重新达成协议,微软持股27%
00:36:59 GitHub 推出 AgentHQ,实现 AI 团队式协作写代码
00:40:25 DeepSeek 在加密交易与模型性能上表现亮眼
00:43:39 DeepSeek 发布开源 OCR 模型,性能超越传统方案
00:45:15 Claude 推出 Haiku 4.5,性能接近旗舰但成本更低
00:46:46 ChatGPT 开放成人内容限制,反击 Grok
00:49:13 AI 红绿灯系统以提升交通效率
00:50:55 俄亥俄州禁止人类与AI结婚,反映伦理担忧
00:51:58 Sora 开放安卓预注册,好莱坞因版权风险开始反制
01:02:36 ChatGPT 推出即时结账功能,可直接完成支付
01:03:58 Claude 订阅体系引争议
01:09:11 Google 量子计算取得重要进展,误差率更低
01:10:03 Intel 发布 1.8nm 芯片,与 Apple M5 竞争
01:11:53 影视飓风发布相机应用,展示团队商业化能力
01:27:57 太空反射镜计划提供夜间阳光

幕后制作

联系我们

节目收听方式

推荐使用苹果Podcast, 小宇宙等播客客户端搜索“枫言枫语”来订阅收听本节目。

Vol. 153 科技快乐星球39:苹果的AI布局、iPhone Air调整与未来生态开放

2025-11-03 17:06:08

好久不见,甚是想念!

国庆放了个长假,结果我台一放就一个月了😂

感谢小伙伴们的关注,催更已经收到,我们回来啦!

本期快乐星球,一下聊得有点嗨,分为两集播出,先让我们走进上集:苹果新闻。

自力也发布了新App: 2Camera,在iPhone上支持两个摄像头同时拍摄,双份故事, 双倍精彩,一键合成录制画中画。欢迎各位小伙伴们下载试用👏。

时间轴

  • 00:00:00 请听我拖更狡辩、AI新品密集发布
  • 00:01:20 Apple Intelligence现状与体验问题
  • 00:03:03 Xcode接入AI、苹果迭代节奏与挑战
  • 00:04:17 iPhone 17热卖、iPhone Air受eSIM影响销量低迷
  • 00:12:07 个人双机需求、携号转网计划
  • 00:16:26 iPhone Air停产、Presto无线升级技术
  • 00:22:02 Tim Cook缅怀Steve Jobs、领导成绩、创新挑战
  • 00:30:38 美国科技经济韧性、AI泡沫
  • 00:32:36 iPhone 17 Pro Max氧化传闻、Liquid Glass更新
  • 00:37:35 iPhone 18相机按钮调整、护照数字化
  • 00:43:19 数据迁移、智能床垫、苹果MCP协议
  • 00:51:50 节目总结与下集预告

幕后制作

联系我们

节目收听方式

推荐使用苹果Podcast, 小宇宙等播客客户端搜索“枫言枫语”来订阅收听本节目。

完全沉浸的旅行越来越难得

2025-10-13 13:46:16

Some notes from 10/07-10/11

1. 舷窗外的风景

Posted on 2025-10-07

2. 完全沉浸的旅行越来越难得

Posted on 2025-10-09

假期去了一趟新疆,虽然知道长假国内会有很多人出行,但最近确无精力自行规划出国旅行,于是选择让旅行社安排一切。于是这样旅行几乎全程不需要动脑,非常省心。

国内有不少壮丽的风光很值得去看看,当然国庆假期并不是一个合适的时间,季节虽然对了,但人流之汹涌还是超出想象。再加上恰逢几天都是坏天气,大雪封路,各种堵车,路上免不了遇到些无奈时间。

新疆很大,我们大部分时间在车上,又因为带着小孩,所以真正能放空的时间不算多,有些走马观花之感。

其实在十多年前我们在世界各地穷游时也免不了走马观花,但那时候很多东西没见过,会在第一次大雪中开心地蹦跶,会在穿越数千年的古迹间驻足沉思。现今再看眼前风景,虽十分壮丽,却少了年轻时容易激动的心情。

可能更理想的旅行方式是不赶时间,不打卡,不在人流量最大的时候挤在景区入口等着上车。想实现这样的旅行方式,对打工族来说并不容易。

我想起孙东纯写的《迟到的间隔年》,本是作者在论坛上连载自己的Gap Year旅行经历,后来出版社邀请出书,成书已是2009年的事情了。

时隔十六年,我仍未开启我的间隔年,不知将迟到至何时呢。

3. Canton Tower at 4× and 8x zoom, shot on iPhone.

Posted on 2025-10-11

Vol. 152 科技快乐星球38: Codex追赶Claude Code, Qwen开源LLM突破一万亿参数

2025-09-25 17:50:55

迎中秋,庆国庆,各位听众姥爷们假期好🎉

最近OpenAI的Codex在写代码能力上追赶竞争对手Anthropic的Claude Code,还推出GPT-5-Codex专用模型,双方差距正在缩小。

Google推出Nano Banan(Gemini 2.5 Flash Image)文生图模型,因人像生成稳定,效果拔群。

阿里的Qwen3-Mac-Preview发布,成为国内首个超1万亿参数的大语言模型。

感觉今年国内的LLMs追赶速度很快,我们节目里聊聊。

时间轴

  • 00:00:00 开场
  • 00:00:32 iPhone 17系列预购与购买体验
  • 00:03:49 苹果或推出太阳眼镜大小的Vision Pro设备
  • 00:04:03 Meta与Ray-Ban合作发布新款内置显示器的眼镜
  • 00:08:04 iPhone 17系列支持25W无线快充
  • 00:11:11 Xcode 26支持使用Claude模型
  • 00:13:07 苹果开发全新操作系统"Charismatic" 将用于智能家居设备
  • 00:16:01 OpenAI 发布 GPT-5-Codex,大幅提升代码生成和审查能力
  • 00:19:36 OpenAI 正式官宣ChatGPT的MCP功能上线。目前仅Plus和Pro用户可用
  • 00:21:09 OpenAI 推出 GPT-5 Thinking 思考时间调节功能
  • 00:30:05 OpenAI 正式向免费用户开放 ChatGPT Projects 功能
  • 00:31:39 OpenAI CEO 透露 GPT-6 开发计划 将强化个性化与记忆功能
  • 00:32:57 ChatGPT Real-time Voice Agent功能推出
  • 00:22:43 Nano Banana在手办Prompt生成方面表现出色,细节保持度高
  • 00:28:38 Nano Banana集成到Photoshop
  • 00:35:39 美团发布LongCat Flash Chat大语言模型
  • 00:35:43 阿里推出Qwen3 Max Preview,参数超万亿,能力强大且开源
  • 00:36:37 阿里推出魔改版VS Code插件Qoder
  • 00:37:38 中国实行AI生成内容标志办法,DeepSeek为AI内容添加标志
  • 00:38:05 DeepSeek V3.1出现严重Bug,随机插入“极”字
  • 00:40:15 DeepSeek V3.1与国产芯片
  • 00:43:08 Anthropic推出Claude浏览器AI助手,可直接操作网页
  • 00:43:15 Google将Gemini放入Chrome,但目前仅限美国地区
  • 00:47:10 Anthropic CEO预测AI将在3-6个月内编写90%代码
  • 00:51:37 Anthropic宣布Claude模型可主动终止危险对话
  • 00:53:13 Perplexity提议340亿美元收购Google Chrome
  • 00:53:46 AI智能穿戴硬件Looki发布
  • 00:55:41 Meta考虑缩减AI部门规模,重组团队,壮大超级智能部门
  • 00:57:35 中国推出SIM卡大小的SSD,技术领先
  • 00:58:00 ROG 枪神9笔记本支持快拆,方便升级硬件
  • 01:18:16 祝大家国庆假期愉快🎉

幕后制作

联系我们

节目收听方式

推荐使用苹果Podcast, 小宇宙等播客客户端搜索“枫言枫语”来订阅收听本节目。