Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
JJstyle
V2EX  ›  Linux

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

  •  1
     
  •   JJstyle · Dec 6, 2020 via iPhone · 4476 views
  •   You need to sign in to view this topic
    This topic created in 2110 days ago, the information mentioned may be changed or developed.
    昨天被 k8s 的一个网络问题(具体表现是不能在 worker 节点访问 service ip )折腾了半天,又是抓包又是配置 iptables 等等,糊里糊涂的…后来发现是默认网卡设置错了…

    谢谢。
    Supplement 1  ·  Dec 6, 2020

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

    问题产生的环境以及原因: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
    
    Supplement 2  ·  Dec 6, 2020

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

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

    13 replies    2020-12-07 15:55:19 +08:00
    learningman
        1
    learningman  
       Dec 6, 2020
    先自顶向下,然后去看文档吧
    CallMeReznov
        2
    CallMeReznov  
       Dec 6, 2020   ❤️ 1
    fasionchan
        3
    fasionchan  
       Dec 6, 2020   ❤️ 1
    收藏~

    等我有空将这些话题都整理一下,收录到语雀知识库: https://www.yuque.com/coding-fan/network
    zhoudaiyu
        4
    zhoudaiyu  
       Dec 7, 2020
    iptables 不是 kube-proxy 自动生成的吗?为啥要配呢?
    lvzhiqiang
        5
    lvzhiqiang  
       Dec 7, 2020
    用 VMware Workstation, 网络访问方式 用 nat, 组一个私网。 能上外网又不会出现你说的那些莫名的问题。 你这样做只会引入复杂性,不容易排错和定位问题。
    JJstyle
        6
    JJstyle  
    OP
       Dec 7, 2020 via iPhone
    @lvzhiqiang 你说的这种应该就是 vb 里面的桥接模式吧,我刚开始也用这种,这个确实方便省事,但是有个缺陷就是 wifi 变了虚拟机 ip 也会变
    JJstyle
        7
    JJstyle  
    OP
       Dec 7, 2020
    @lvzhiqiang VMware Workstation 的 nat 模式是可以的,找了篇文章分析两个虚拟机软件的网络的区别,看来这个 nat 模式区别有点大: https://blog.csdn.net/lyjshen/article/details/69367245
    lvzhiqiang
        8
    lvzhiqiang  
       Dec 7, 2020
    @JJstyle nat 模式,不会变, 你只要配置 IP 为固定 IP 就可以了。 桥接模式也可以,IP 和你真实物理的局域网一个段,同样是配置固定 IP 就行。DHCP 只是自动获取 IP 而已。
    JJstyle
        9
    JJstyle  
    OP
       Dec 7, 2020
    @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
       Dec 7, 2020
    @lvzhiqiang virtualbox 的 nat 和 vmware 的 nat 有些区别,即 vb 里的 nat,虚拟机互相无法通信(可以看我上面发到链接),所以我不能用他搭建集群网络。
    JJstyle
        11
    JJstyle  
    OP
       Dec 7, 2020
    @lvzhiqiang 固定 IP 这个我清楚,但是有时我在家,有时我在公司,网络不一样,所以 IP 无法固定
    lvzhiqiang
        12
    lvzhiqiang  
       Dec 7, 2020
    @JJstyle vmware 用 nat 就可以了。 我都是用 nat,搞了很多次部署配置实验了。
    lc7029
        13
    lc7029  
       Dec 7, 2020
    建议先系统学习 tcpip,吃透原理再来
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5669 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 01:56 · PVG 09:56 · LAX 18:56 · JFK 21:56
    ♥ Do have faith in what you're doing.