问题:网络一切正常,只是偶尔网络上所有主机的 https 都会超时。几分钟后,网络又恢复到近乎即时的状态,持续几个小时。
细节:
我正在运行带有 2 个 NICS 的 Ubuntu Server 12.04:
- NIC 1 为 WAN,来自电缆调制解调器的 dhcp
- NIC 2 是 LAN,192.168.0.1 连接到路由器的 WAN 端口 192.168.0.2
- 在我让一切恢复正常之前,所有 iptables 链都有接受策略
- 来自 192.168.0.0/16 的所有流量都伪装成 WAN 端口
- 接受来自 192.168.0.0/16 的所有转发
- 如果已建立或相关,则接受所有到 192.168.0.0/16 的转发
- 10.0.0.0/16 的三条规则与上述相同,因为我一直在测试其他配置
路由器:华硕rt-n56u
- LAN 上的所有内容都是 10.0.0.0/24 内的 DHCP(2.4ghz、5ghz 和 LAN 端口)
- 从 10.0.0.1 网关通过 WAN 端口进行 NAT 到 192.168.0.1
- 未配置静态路由)
- 内置防火墙暂时已禁用
下面您将看到我的 /etc/network/interfaces、iptables 设置和 ifconfig。如果有任何其他信息有用,请告诉我。
###############################################################
/etc/network/interfaces:
#connects to the cable modem
auto WAN
iface WAN inet dhcp
#connects to the LAN router
auto LAN
iface LAN inet static
address 192.168.0.1
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
#loopback interface
auto lo
iface lo inet loopback
###############################################################
iptables rules:
#I've set all the chains to accept. Once I get everything working, I'll implement a whitelist.
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
#turn on NAT for /16 subnet by mangling with the MASQUERADE module
iptables --table nat -A POSTROUTING -s 192.168.0.0/16 -o WAN -j MASQUERADE
iptables --table nat -A POSTROUTING -s 10.0.0.0/16 -o WAN -j MASQUERADE
#allow all traffic from the /16 subnet to WAN
iptables -A FORWARD -s 192.168.0.0/16 -o WAN -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/16 -i LAN -o WAN -j ACCEPT
#allow traffic from the WAN to the /16 subnet if a connection was established b$
iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i WAN -j ACCEPT
iptables -A FORWARD -d 10.0.0.0/16 -m state --state ESTABLISHED,RELATED -i WAN -j ACCEPT
#drop packets that attempt to spoof source LAN IPs
iptables -A INPUT -i WAN -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i WAN -s 10.0.0.0/8 -j DROP
###############################################################
ifconfig:
LAN Link encap:Ethernet HWaddr 00:22:4d:a1:5d:42
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::222:4dff:fea1:5d42/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:53737 errors:0 dropped:0 overruns:0 frame:0
TX packets:136493 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8626679 (8.6 MB) TX bytes:178113059 (178.1 MB)
Interrupt:17 Memory:d0020000-d0040000
WAN Link encap:Ethernet HWaddr 00:22:4d:a1:5d:3e
inet addr:XXX.XXX.XXX.XXX Bcast:255.255.255.255 Mask:255.255.255.224
(external IP sensored)
UP BROADCAST RUNNING MULTICAST MTU:576 Metric:1
RX packets:142317 errors:0 dropped:0 overruns:0 frame:0
TX packets:54748 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:178555294 (178.5 MB) TX bytes:8369828 (8.3 MB)
Interrupt:16 Memory:d0120000-d0140000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:18 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1474 (1.4 KB) TX bytes:1474 (1.4 KB)
任何建议都将不胜感激。提前谢谢您。
答案1
问题解决了。
WAN 上的 DHCP 将 MTU 设置为 576(如 ifconfig 中所示)。
解决方案:
- 简单地从 /etc/dhcp3/dhclient.conf 中的请求列表中删除了接口 mtu(以阻止我的服务器从我的 ISP 获取错误值 576)。
-在 /etc/network/interfaces 中的“iface WAN inet dhcp”下添加了“mtu 1500”
重启。
现在一切都处于最佳状态。