iptables nat не работает для sctp
У меня есть сервер во внутренней сети, и я хочу получить к нему доступ из внешних.
сеть выглядит следующим образом: Сервер A (132.196.28.229) находится во внешней сети. Сервер B (10.35.202.24) может обращаться к обоим сетям. Сервер C (192.168.10.99) находится во внутренней сети.
Итак, я настраиваю iptables на сервере B для пересылки всего трафика с сервера A на сервер C
iptables -t nat -A PREROUTING -d 10.35.202.24 -j DNAT --to-destination 192.168.10.99
Затем я проверяю его с помощью ping, и он работает. Tcpdump на сервере B, вы можете увидеть эхо- запрос с сервера A, а цель - 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
и Tcpdump на сервере C. теперь целевой адрес изменен на 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. Вот сообщение INIT, которое я вызвал с сервера A:
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. Похоже, что NAT для sctp не работает, и из-за сервера B не имеет никакой службы sctp. поэтому сервер B отвечает как недостижимый.
Я также проверил SSH. Переадресация работает хорошо. так это выглядит только не работает для SCTP!!??
Любое предложение, почему это произошло? какая-то специальная конфигурация для sctp я пропустил?
2 ответа
Я предполагаю, что вы уже установили SCTP, если это так, вы, вероятно, отсутствует nf_conntrack_proto_sctp
модуль. Этот модуль необходим для работы iptables с SCTP. Попробуй это:
# modprobe nf_conntrack_proto_sctp
Вы можете проверить, разрешив порт SCTP. Здесь первые сообщения INIT и INIT-ACK могут работать. Обратите внимание, что другой узел отправляет свой IP в полезной нагрузке SCTP INIT-ACK. Пожалуйста, проверьте больше
https://www.cspsprotocol.com/sctp-protocol-basic-and-advance-sctp-concepts/