Maison > Questions et réponses > le corps du texte
为了解决内外网访问问题,用一台ubuntu 14.04.1安装了OpenVPN,并利用ubuntu自带的iptables做NAT。但是做完后发现,简单的远程访问没有问题,但是当数据返回稍微一大,如查看一个文件,或者传输一个文件时,访问终端就会吊死。但是利用iftop查看网络流量确是正常的。
网络结构如下:
sh
oper@~ % ifconfig 15-01-25 5:59 docker0 Link encap:Ethernet HWaddr 56:84:7a:fe:97:99 inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth0 Link encap:Ethernet HWaddr 00:50:56:b0:8a:0b inet addr:9.115.251.155 Bcast:9.115.251.255 Mask:255.255.255.0 inet6 addr: fe80::250:56ff:feb0:8a0b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:11790 errors:0 dropped:0 overruns:0 frame:0 TX packets:1070 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1010944 (1.0 MB) TX bytes:149870 (149.8 KB) eth1 Link encap:Ethernet HWaddr 00:50:56:b0:1c:a7 inet addr:10.10.10.5 Bcast:10.10.10.255 Mask:255.255.255.0 inet6 addr: fe80::250:56ff:feb0:1ca7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:492 errors:0 dropped:0 overruns:0 frame:0 TX packets:104 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:60870 (60.8 KB) TX bytes:11280 (11.2 KB)
需求是从eth0访问的用户能够访问到eth1网络内的机器。
iptables的规则如下:
sh
oper@~ % cat /etc/iptables-rules 15-01-25 5:59 # Generated by iptables-save v1.4.21 on Tue Jan 6 06:00:25 2015 *nat :PREROUTING ACCEPT [1:78] :INPUT ACCEPT [1:78] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :DOCKER - [0:0] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE -A POSTROUTING -o eth1 -j MASQUERADE COMMIT # Completed on Tue Jan 6 06:00:25 2015 # Generated by iptables-save v1.4.21 on Tue Jan 6 06:00:25 2015 *filter :INPUT ACCEPT [80:10140] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [69:6479] -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i docker0 ! -o docker0 -j ACCEPT -A FORWARD -i docker0 -o docker0 -j ACCEPT -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT # -A FORWARD -i eth1 -o eth0 -j ACCEPT -A FORWARD -i eth0 -o eth1 -j ACCEPT COMMIT # Completed on Tue Jan 6 06:00:25 2015
换了几台终端都是同样的问题。但是在这台ubuntu上向内网访问,或者是外网终端直接访问ubuntu却都没有问题,所以估计是iptables的问题。
不知sf上有人能帮到我么?
PHPz2017-04-21 11:18:32
Après des tests, il a été constaté que cela n'avait rien à voir avec iptables. Au départ, je pensais qu'il s'agissait d'un problème avec le MTU d'Ubuntu, mais le test a révélé qu'il n'était pas valide. Plus tard, j'ai capturé des paquets et constaté que les trames d'une taille de 1422 dans la session étaient constamment retransmises. Après le débogage, j'ai confirmé qu'il s'agissait d'un problème avec la taille MTU d'OpenVPN.
Après avoir ajouté la configuration MTU au serveur et au client OpenVPN, la connexion est normale.
tun-mtu 1500
fragment 1300
mssfix 1300
Mais ce qui m'intéresse, c'est pourquoi c'était OK sans modifier le MTU sur WINDOWS auparavant ?