楼主是直接在 linux 系统里进行 pppoe 拨号上网,拨号成功后会创建一个名为 ppp0 的网络接口,这个网络接口的 ip 就是运营商分配的动态公网 ip ,然后通过以下命令将这台 linux 作为其它设备的网关: iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
现在遇到的问题是其他设备将这台 linux 作为网关后大部分网站都打不开,但有各别网站能打开,
打不开的比如: https://www.jd.com
能打开的比如: https://mirrors.163.com
我怎么想也想不通为什么是这种情况,求大佬指点
1
Atsushi 2023-05-16 15:37:27 +08:00
是不是 DNS 给了 V6 的地址,你只配了 V4 的转发?
|
2
huaxie1988 2023-05-16 15:39:21 +08:00 via Android
设置 mtu 钳制
|
3
NessajCN 2023-05-16 15:50:42 +08:00
|
4
wniming OP @huaxie1988 为什么要设置这个呢?
|
6
busier 2023-05-16 16:30:52 +08:00
多半是 MTU 问题!
|
7
huaxie1988 2023-05-16 17:03:10 +08:00 via Android
@wniming wan 口 pppoe mtu 是 1492 ,lan 口以太网是 1500 。
|
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 |
9
wniming OP |
11
huaxie1988 2023-05-16 21:48:04 +08:00 via Android
@wniming mss 1452
|
12
wniming OP @mrzx @huaxie1988 感谢,解决了,v 友果然牛逼,能解释一下为什么吗?
|
13
wniming OP 记录一下将 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 |
14
mrzx 2023-05-17 09:42:55 +08:00 1
@wniming
mss 不建议设置过小,会增加转发的负担。 现在网站前面经过层层网络转发,包的头太多了,TCP 自动协商最大分段量基本不会成功,所以要手动指定 其实你们买的大多数路由器,就跟傻瓜相机一样,都默认指定好了 mss,不需要你们额外配置。所以你们根本不知道,甚至不知道有这个概念, 你不是网络专业出身,不知道非常正常。 但针对一些企业路由器,mss 是需要一开始就要手动指定的。不过这是趋势,现在连 routeros/Mikrotik 的产品都会在 mange 处自动打上标记并修改 mss @huaxie1988 没想到现在 1460 都不够用了,要 1452 了,好吧。。 |
15
julyclyde 2023-05-18 14:33:55 +08:00 1
首先,“转发”不是由 masquerade 决定的
masquerade 只是在“决定要转发”之后做一些工作 |