我在内部网络中有一个服务器,我想从外部访问它。
网络如下: 服务器 A(132.196.28.229)位于外部网络 服务器 B(10.35.202.24)可以访问两个网络 服务器 C(192.168.10.99)位于内部网络
因此,我在服务器 B 上配置 iptables,将所有流量从服务器 A 转发到服务器 C
iptables -t nat -A PREROUTING -d 10.35.202.24 -j DNAT --to-destination 192.168.10.99
然后我用 ping 测试它,它工作正常。在服务器 B 上使用 Tcpdump,您可以看到来自服务器 A 的 ping 和目标是10.35.202.24:
15:34:36.366034 IP 132.196.28.229 > 10.35.202.24: ICMP echo request, id 24510, seq 1, length 64
15:34:37.366321 IP 132.196.28.229 > 10.35.202.24: ICMP echo request, id 24510, seq 2, length 64
15:34:38.374983 IP 132.196.28.229 > 10.35.202.24: ICMP echo request, id 24510, seq 3, length 64
15:34:39.374849 IP 132.196.28.229 > 10.35.202.24: ICMP echo request, id 24510, seq 4, length
并在服务器 C 上运行 Tcpdump。现在目标地址更改为192.168.10.99:
15:34:35.741802 IP 132.196.28.229 > 192.168.10.99: ICMP echo request, id 24510, seq 1, length 64
15:34:36.742018 IP 132.196.28.229 > 192.168.10.99: ICMP echo request, id 24510, seq 2, length 64
15:34:37.750633 IP 132.196.28.229 > 192.168.10.99: ICMP echo request, id 24510, seq 3, length 64
15:34:38.750499 IP 132.196.28.229 > 192.168.10.99: ICMP echo request, id 24510, seq 4, length 64
但是,相同的转发不适用于 SCTP 消息。这是我从服务器 A 触发的 INIT 消息:
15:39:18.787145 IP 132.196.28.229.32763 > 10.35.202.24.36412: sctp (1) [INIT] [init tag: 495530240] [rwnd: 62464] [OS: 64] [MIS: 64] [init TSN: 322647100]
15:39:18.787189 IP 10.35.202.24 > 132.196.28.229: ICMP 10.35.202.24 protocol 132 unreachable, length 76
15:39:21.786640 IP 132.196.28.229.32763 > 10.35.202.24.36412: sctp (1) [INIT] [init tag: 495530240] [rwnd: 62464] [OS: 64] [MIS: 64] [init TSN: 322647100]
15:39:21.786687 IP 10.35.202.24 > 132.196.28.229: ICMP 10.35.202.24 protocol 132 unreachable, length 76
我无法在服务器 C 上捕获任何 sctp 信息。看来 sctp 的 NAT 不起作用,而且由于服务器 B 没有启用任何 sctp 服务。因此服务器 B 回复为无法访问。
我也测试了 ssh。转发工作正常。所以它似乎只对 SCTP 不起作用!!??
有什么建议为什么会发生这种情况?我是否错过了 SCTP 的任何特殊配置?
答案1
我猜你已经安装了 SCTP,如果是这样,你可能缺少该nf_conntrack_proto_sctp
模块。此模块是 iptables 与 SCTP 配合使用所必需的。试试这个:
# modprobe nf_conntrack_proto_sctp
答案2
您可以通过允许 SCTP 端口进行检查。这里第一条消息 INIT 和 INIT-ACK 可能有效,请注意其他节点在 SCTP INIT-ACK 有效负载中发送其 IP。请查看更多
https://www.cspsprotocol.com/sctp-protocol-basic-and-advance-sctp-concepts/