내부 네트워크에 서버가 있는데 외부에서 접속하고 싶습니다.
네트워크는 다음과 같습니다. 서버 A(132.196.28.229)는 외부 네트워크에 있습니다. 서버 B(10.35.202.24)는 두 웹 서버 모두에 액세스할 수 있습니다. C(192.168.10.99)는 내부 네트워크에 있습니다.
그래서 서버 A에서 서버 C로 모든 트래픽을 전달하도록 서버 B에 iptables를 구성합니다.
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
Linux 커널에 일부 모듈이 누락되었을 수 있습니다. 이 시도:
modprobe nf_conntrack_proto_sctp
modprobe nf_nat_proto_sctp