V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
JJstyle
V2EX  ›  Linux

求推荐一本 Linux 网络管理相关的书,包含 iptables、路由, tcpdump 抓包等内容

  •  1
     
  •   JJstyle · 2020-12-06 12:52:29 +08:00 via iPhone · 3603 次点击
    这是一个创建于 1483 天前的主题,其中的信息可能已经有所发展或是发生改变。
    昨天被 k8s 的一个网络问题(具体表现是不能在 worker 节点访问 service ip )折腾了半天,又是抓包又是配置 iptables 等等,糊里糊涂的…后来发现是默认网卡设置错了…

    谢谢。
    第 1 条附言  ·  2020-12-06 16:47:01 +08:00

    问题算是完美解决了,这里记录一下希望能帮助有需要的人。

    问题产生的环境以及原因:virtualbox虚拟机,k8s: 1master 2worker,网络均使用host-only模式生成虚拟机节点IP,此IP不需要DHCP到宿主机的路由器,因此不会随着外部网络环境的变化而改变IP,但弊端是无法连接外部网络,于是楼主想到使用NAT模式来从虚拟机中访问外部网络环境。

    因此理想的情况是:

    集群内部网络 => 走 host-only网卡
    外部网络 => 走 nat 网卡
    

    在worker节点下执行 route -n查看路由表,我发现service ip(10.96.0.0/12)并不在这个路由表里,最终导致走了最后的host-only网卡,我们知道host-only网卡是连不到外部网络的,因此执行下面的操作,回归正常:

    # 如果目标IP不在路由表里,走这条路由(即外部网络,10.0.3.2 是nat的网关)
    route add default gw 10.0.3.2 dev enp0s8
    
    # 目标是k8s service ip网段走host-only网卡(即下面的enp0s3)
    route add -net 10.96.0.0/12 dev enp0s3
    

    简单测试一下:

    curl https://10.96.0.1 --insecure -vvv
    curl baidu.com -vvv
    
    第 2 条附言  ·  2020-12-06 16:55:28 +08:00

    ~~ 我发现service ip(10.96.0.0/12)并不在这个路由表里,最终导致走了最后的host-only网卡,我们知道host-only网卡是连不到外部网络的~~

    抱歉这部分说反了,实际是service ip 走了nat模式到外网寻找网络10.96.0.0/12去了,显然这样是找不到的。

    13 条回复    2020-12-07 15:55:19 +08:00
    learningman
        1
    learningman  
       2020-12-06 12:56:07 +08:00
    先自顶向下,然后去看文档吧
    CallMeReznov
        2
    CallMeReznov  
       2020-12-06 17:16:54 +08:00   ❤️ 1
    fasionchan
        3
    fasionchan  
       2020-12-06 18:36:26 +08:00   ❤️ 1
    收藏~

    等我有空将这些话题都整理一下,收录到语雀知识库: https://www.yuque.com/coding-fan/network
    zhoudaiyu
        4
    zhoudaiyu  
       2020-12-07 09:00:14 +08:00
    iptables 不是 kube-proxy 自动生成的吗?为啥要配呢?
    lvzhiqiang
        5
    lvzhiqiang  
       2020-12-07 09:33:43 +08:00
    用 VMware Workstation, 网络访问方式 用 nat, 组一个私网。 能上外网又不会出现你说的那些莫名的问题。 你这样做只会引入复杂性,不容易排错和定位问题。
    JJstyle
        6
    JJstyle  
    OP
       2020-12-07 09:50:43 +08:00 via iPhone
    @lvzhiqiang 你说的这种应该就是 vb 里面的桥接模式吧,我刚开始也用这种,这个确实方便省事,但是有个缺陷就是 wifi 变了虚拟机 ip 也会变
    JJstyle
        7
    JJstyle  
    OP
       2020-12-07 10:16:54 +08:00
    @lvzhiqiang VMware Workstation 的 nat 模式是可以的,找了篇文章分析两个虚拟机软件的网络的区别,看来这个 nat 模式区别有点大: https://blog.csdn.net/lyjshen/article/details/69367245
    lvzhiqiang
        8
    lvzhiqiang  
       2020-12-07 10:19:45 +08:00
    @JJstyle nat 模式,不会变, 你只要配置 IP 为固定 IP 就可以了。 桥接模式也可以,IP 和你真实物理的局域网一个段,同样是配置固定 IP 就行。DHCP 只是自动获取 IP 而已。
    JJstyle
        9
    JJstyle  
    OP
       2020-12-07 10:21:44 +08:00
    @zhoudaiyu 所以我一开始方向就错了,iptables 没问题,往上找了篇博客,我跟他有类似的问题,但是他是改 iptables 解决的,https://wilhelmguo.cn/blog/post/william/Kubernetes-%E8%B8%A9%E5%9D%91%E8%AE%B0%E4%B9%8B-%E9%9B%86%E7%BE%A4node%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AEservice
    JJstyle
        10
    JJstyle  
    OP
       2020-12-07 10:24:33 +08:00
    @lvzhiqiang virtualbox 的 nat 和 vmware 的 nat 有些区别,即 vb 里的 nat,虚拟机互相无法通信(可以看我上面发到链接),所以我不能用他搭建集群网络。
    JJstyle
        11
    JJstyle  
    OP
       2020-12-07 10:26:42 +08:00
    @lvzhiqiang 固定 IP 这个我清楚,但是有时我在家,有时我在公司,网络不一样,所以 IP 无法固定
    lvzhiqiang
        12
    lvzhiqiang  
       2020-12-07 10:35:33 +08:00
    @JJstyle vmware 用 nat 就可以了。 我都是用 nat,搞了很多次部署配置实验了。
    lc7029
        13
    lc7029  
       2020-12-07 15:55:19 +08:00
    建议先系统学习 tcpip,吃透原理再来
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1559 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:58 · PVG 00:58 · LAX 08:58 · JFK 11:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.