V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wniming
V2EX  ›  程序员

Linux 配置 ip 转发问题求教

  •  
  •   wniming · 2023-05-16 15:19:55 +08:00 · 1443 次点击
    这是一个创建于 555 天前的主题,其中的信息可能已经有所发展或是发生改变。

    楼主是直接在 linux 系统里进行 pppoe 拨号上网,拨号成功后会创建一个名为 ppp0 的网络接口,这个网络接口的 ip 就是运营商分配的动态公网 ip ,然后通过以下命令将这台 linux 作为其它设备的网关: iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

    现在遇到的问题是其他设备将这台 linux 作为网关后大部分网站都打不开,但有各别网站能打开,

    打不开的比如: https://www.jd.com

    能打开的比如: https://mirrors.163.com

    我怎么想也想不通为什么是这种情况,求大佬指点

    16 条回复    2023-05-22 10:00:51 +08:00
    Atsushi
        1
    Atsushi  
       2023-05-16 15:37:27 +08:00
    是不是 DNS 给了 V6 的地址,你只配了 V4 的转发?
    huaxie1988
        2
    huaxie1988  
       2023-05-16 15:39:21 +08:00 via Android
    设置 mtu 钳制
    NessajCN
        3
    NessajCN  
       2023-05-16 15:50:42 +08:00
    wniming
        4
    wniming  
    OP
       2023-05-16 16:22:14 +08:00
    @huaxie1988 为什么要设置这个呢?
    wniming
        5
    wniming  
    OP
       2023-05-16 16:22:32 +08:00
    @Atsushi 不是,都是 ipv4
    busier
        6
    busier  
       2023-05-16 16:30:52 +08:00
    多半是 MTU 问题!
    huaxie1988
        7
    huaxie1988  
       2023-05-16 17:03:10 +08:00 via Android
    @wniming wan 口 pppoe mtu 是 1492 ,lan 口以太网是 1500 。
    mrzx
        8
    mrzx  
       2023-05-16 17:08:45 +08:00   ❤️ 1
    1.mtu 必须 1492
    2.mss 值,iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN- j TCPMSS --set-mss 1460


    基本上就这 2 个问题,按我的经验判断,估计更大可能性是 2
    wniming
        9
    wniming  
    OP
       2023-05-16 17:47:41 +08:00
    @busier @huaxie1988 @mrzx 我将 mtu 设置为 1492 试了不行
    wniming
        10
    wniming  
    OP
       2023-05-16 17:50:56 +08:00
    @mrzx 设置 mss 值也试了不行的
    huaxie1988
        11
    huaxie1988  
       2023-05-16 21:48:04 +08:00 via Android
    @wniming mss 1452
    wniming
        12
    wniming  
    OP
       2023-05-16 23:29:19 +08:00
    @mrzx @huaxie1988 感谢,解决了,v 友果然牛逼,能解释一下为什么吗?
    wniming
        13
    wniming  
    OP
       2023-05-16 23:29:27 +08:00
    记录一下将 linux 配置成网关需要哪几条命令:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452
    mrzx
        14
    mrzx  
       2023-05-17 09:42:55 +08:00   ❤️ 1
    @wniming
    mss 不建议设置过小,会增加转发的负担。

    现在网站前面经过层层网络转发,包的头太多了,TCP 自动协商最大分段量基本不会成功,所以要手动指定

    其实你们买的大多数路由器,就跟傻瓜相机一样,都默认指定好了 mss,不需要你们额外配置。所以你们根本不知道,甚至不知道有这个概念,

    你不是网络专业出身,不知道非常正常。

    但针对一些企业路由器,mss 是需要一开始就要手动指定的。不过这是趋势,现在连 routeros/Mikrotik 的产品都会在 mange 处自动打上标记并修改 mss

    @huaxie1988 没想到现在 1460 都不够用了,要 1452 了,好吧。。
    julyclyde
        15
    julyclyde  
       2023-05-18 14:33:55 +08:00   ❤️ 1
    首先,“转发”不是由 masquerade 决定的
    masquerade 只是在“决定要转发”之后做一些工作
    mrzx
        16
    mrzx  
       2023-05-22 10:00:51 +08:00   ❤️ 1
    @julyclyde 你说的不错,路由转发是转发,NAT 是 NAT ,在网络层面,属于完全两种类型的操作。
    家庭路由器将这 2 步整合在一起了,所以一般人并不了解,不清楚底层原理。把它们混为一谈了.

    不过能让这么多不懂网络的人能成功操作,配置路由器,家庭类的傻瓜路由器功劳真不小。把原本复杂的网络设置简化的如此简单让人轻易上手
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1050 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 22:32 · PVG 06:32 · LAX 14:32 · JFK 17:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.