通过 iptables MASQUERADING 间歇性访问 HTTPS 站点

通过 iptables MASQUERADING 间歇性访问 HTTPS 站点

问题:网络一切正常,只是偶尔网络上所有主机的 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”

重启。

现在一切都处于最佳状态。

相关内容