16.04 iptables NAT 怪异行为在删除后仍继续起作用

16.04 iptables NAT 怪异行为在删除后仍继续起作用
root@p10:/proc/net# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:        16.04
Codename:       xenial

OVH Public Cloud Server, on OpenStack

大家好,

我的 iptables/NAT/16.04 安装出现了一些奇怪的行为。

OpenVPN 已设置为接收连接并正常工作。由于某些历史原因,VPN 数据包必须在 WAN 公共接口 ens33 上传出并转换(并使用其地址作为源)。

但Masquerade的行为并不一致。

例如,我启用了 Masquerade,但它不会立即工作。几分钟后(可变),它将开始工作。然后我删除 Masquerade,它继续工作,几分钟或更长时间。

所有这些都使我很难诊断和实现进一步的功能(目标是 2 个 VPN 在 2 个不同的公共 IP 地址上进行 NAT)。

我真的不明白发生了什么。如果有人知道的话,请帮忙!

详细信息如下:

接口

ens3      Link encap:Ethernet  HWaddr 
          inet addr:54.38.X.X  

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.99.0.1  P-t-P:10.99.0.2  Mask:255.255.255.255

筛选器

root@p10:/proc/net# iptables -L -vnx
Chain INPUT (policy DROP 53737 packets, 2988971 bytes)
    pkts      bytes target     prot opt in     out     source               destination
    6120   612989 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:587
(...)

Chain FORWARD (policy ACCEPT 433 packets, 39648 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 10153 packets, 1034888 bytes)
    pkts      bytes target     prot opt in     out     source               destination

化装舞会

root@p10:/proc/net# iptables -t nat -L -vnx
Chain PREROUTING (policy ACCEPT 8367 packets, 465763 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 2 packets, 152 bytes)
    pkts      bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination
       4      272 MASQUERADE  all  --  *      *       0.0.0.0/0            0.0.0.0/0

向前

root@p10:/proc/net# sysctl -a | grep "\.forwarding" | grep ipv4
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.ens3.forwarding = 1
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.tun0.forwarding = 1

客户

在我的 Windows VPN 客户端上,推送路由,例如通过 VPN 将数据包发送到测试地址 194.51.3.65:

Route print
      194.51.3.65  255.255.255.255      10.99.5.118      10.99.5.117    291

C:\Windows\system32>ping  194.51.3.65

Envoi d’une requête 'Ping'  194.51.3.65 avec 32 octets de données :
Réponse de 194.51.3.65 : octets=32 temps=26 ms TTL=48

Statistiques Ping pour 194.51.3.65:
    Paquets : envoyés = 1, reçus = 1, perdus = 0 (perte 0%),
Durée approximative des boucles en millisecondes :
    Minimum = 26ms, Maximum = 26ms, Moyenne = 26ms
Ctrl+C
^C
C:\Windows\system32>tracert -d 194.51.3.65

Détermination de l’itinéraire vers 194.51.3.65 avec un maximum de 30 sauts.

  1    16 ms    15 ms    25 ms  10.99.0.1
  2    19 ms    20 ms    17 ms  54.38.X.X
  3    18 ms    21 ms    17 ms  158.69.61.222
  4    61 ms    78 ms    15 ms  51.255.245.126
  5    14 ms    16 ms    35 ms  10.97.155.39

可以看到,测试 ping 数据包通过 VPN 发送,运行正常。

现在我的奇怪行为是这样的:

  • 要么我移除 Masquerade,但 ping 仍然有效

  • 或者我移除了 Masquerade,ping 就停止工作了,但是当我重新启用 Masquerade 时,它​​们根本不起作用。有时我必须等待 10 秒,有时则要等待 5 分钟。

其他行为

另外,我还有其他奇怪的事情:

  • 我可以看到连接轨道:

    root@p10:/proc/net# conntrack -L (...) conntrack v1.4.3 (conntrack-tools): 已显示 3 个流条目。

  • 但我看不到 NAT 会话:

    root@p10:/proc/net# netstat-nat 无法从内核读取有关连接的信息,请确保内核或模块中启用了 netfilter。root@p10:/proc/net#

相关内容