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#