家里有一台 Linux 上开了 VPN ,另一台 Mac 想通过这台 Linux 上网,我是按这个教程配置的 IP Forwarding 以及 Iptables: https://www.linode.com/docs/guides/linux-router-and-ip-forwarding/ 然后将 Mac 的网关指向 Linux
问题是在浏览器里打开网页时,可以看到页面加载,但是部分 JS 或图片链接一直显示超时,而且无论如何刷新这几个链接都是失效的。从 Linux 本机上打开任何页面都是没问题的,因为自己对 iptables 不熟,想问问各位大佬有什么办法没有?
另外我之前一直是在 Windows 上连 VPN ,然后共享网络连接给家里其他电脑,一直都没什么问题,今天想在 Linux 上试试,结果一直卡在这里,系统是 Fedora28/32 两个我都尝试过,如果在 Linux 想共享 VPN 连接,还有什么办法吗?
1
revlis7 OP 再说到另一问题,我在 Mac 上拨 L2TP 的 VPN ,几乎每过一段时间必定会断线,短则几分钟,长则数小时,这也是为什么我这么费劲用别的电脑拨 VPN 的关系,这个问题我之前也问过,好像也没什么答案。
但是同样的 VPN 在我那台 Windows 7 上,可以一直保持连接数个月(今天试下来 Linux 应该也没什么问题),所以肯定是 Mac 系统的问题。 |
2
ysc3839 2023-07-30 06:02:02 +08:00 via Android 1
印象中只能用 iptables 配置 NAT 挺麻烦,我都是用 firewalld 的 add masquerade ,或者干脆用 OpenWrt
|
4
billlee 2023-07-30 09:34:00 +08:00 1
看起来像是 PMTUD 的问题,在 iptables 加上 mss clamping 试试
|
5
revlis7 OP 又研究了下,其实在 IP 转发设置后,不拨 VPN 时是可以正常访问所有网页的,在连上 VPN 之后,访问公司内网的页面也是 OK 的,问题只出在连上 VPN 再访问外网页面时部分连接会超时。
|
6
fantathat 2023-07-30 10:49:58 +08:00 via iPhone 1
看 ip 地址对应的网卡,内网网卡是不是新建的,是不是要将内网网卡与外网网卡建立连接啊
|
7
digimoon 2023-07-30 11:13:50 +08:00 1
op 可以直接贴一下连上 vpn 后那 linux 的路由表和 iptables 规则
|
8
revlis7 OP Destination Gateway Genmask Flags Metric Ref Use Iface
default 0.0.0.0 0.0.0.0 U 50 0 0 ppp0 default _gateway 0.0.0.0 UG 100 0 0 ens33 10.60.50.1 0.0.0.0 255.255.255.255 UH 50 0 0 ppp0 180.[VPN_ADDRESS] _gateway 255.255.255.255 UGH 100 0 0 ens33 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 _gateway 0.0.0.0 255.255.255.255 UH 100 0 0 ens33 Iptables 很简单,只有两条规则: Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 245K 155M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 10827 889K MASQUERADE all -- * * 0.0.0.0/0 0.0.0.0/0 |
9
revlis7 OP 我觉得问题应该出在 DNS 上, 因为超时连接的错误都是 NS_ERROR_NET_TIMEOUT ,并且我在 Linux 上本机 nslookup 也都超时(但奇怪的是 Firefox 是可以正常打开网页的)
我搜到这篇文章: https://unix.stackexchange.com/questions/466105/iptables-masquerade-breaks-dns-lookups 说 MASQUERADE 规则可能会 break DNS 查询,因为 systemd-resolved 是工作在 127.0.0.53 上的,然后改了下 MASQUERADE 后,确实 Linux 本机的 nslookup 工作了,但是在 Mac 上还是不能打开网页,依旧是 NS_ERROR_NET_TIMEOUT |
10
digimoon 2023-07-30 12:37:25 +08:00 1
不习惯看这种,路由表用 ip ro ,iptables 用 iptables-save
大概看了应该没啥问题,192.168.1.0 网段才会走 ens33 ,默认走 ppp0 如果只是 dns 问题那直接用 ip 应该是正常的,可以 ping 119.29.29.29 又或者 curl -H "host: baidu.com" 39.156.66.10 mtu 问题可以用 iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu |
11
revlis7 OP |
12
billlee 2023-07-30 16:49:09 +08:00 1
其实,我们一般是把 TCPMSS 加在 mangle 表的,默认的表是 filter, 这个操作显然不属于过滤操作。
|
13
revlis7 OP Fixed
|