방화벽을 사용하여 권한 있는 하위 1024 포트를 권한 없는 1024+ 포트로 어떻게 포트 전달합니까?

방화벽을 사용하여 권한 있는 하위 1024 포트를 권한 없는 1024+ 포트로 어떻게 포트 전달합니까?

질문

방화벽을 사용하여 권한 있는 하위 1024 포트를 권한 없는 1024+ 포트로 어떻게 포트 전달합니까?

이유

우리가 이 일을 하는 이유는 무엇입니까? 우리는 게이트웨이에서 권한이 없는 1050 포트를 전환하고 다른 업스트림 메일 서버를 사용할 수 있기를 원합니다. 예를 들어, 다른 스팸 솔루션을 테스트하려면 포트 1051을 사용하여 다른 스팸 필터링 솔루션을 사용하는 다른 메일 서버로 메일을 보냅니다.

메일 서버는 시작될 때 자동으로 게이트웨이에 연결됩니다. 자동 연결은 1024+인 권한이 없는 포트에서만 발생할 수 있습니다.

레이아웃 및 설정

공들여 나열한 것

+--------+         +---------------------+         +----------------+
|  WAN   |         |                1050 | <-      |                |
| Client |         |       Gateway       |    \    |   Mail Server  |
|        |  <--->  | 25                  |      -> | 25             |
+--------+         +---------------------+         +----------------+

방화벽 설정

방화벽을 지우고, 포트를 열고, 포트 전달을 설정하고, 몇 가지 서비스를 추가하세요.

root@gateway:~# firewall-cmd --reload
root@gateway:~# firewall-cmd --zone=public --add-port=25/tcp
root@gateway:~# firewall-cmd --zone=public --add-forward-port=port=25:proto=tcp:toport=1050
root@gateway:~# firewall-cmd --add-service={http,https,smtp}

방화벽 확인

방화벽 설정을 확인하세요...

root@gateway:~# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: etho0
  sources: 
  services: dhcpv6-client http https smtp ssh
  ports: 25/tcp
  protocols: 
  masquerade: no
  forward-ports: port=25:proto=tcp:toport=1050:toaddr=
  source-ports: 
  icmp-blocks: 
  rich rules: 

이것이 방화벽 규칙에서 볼 수 있을 것으로 예상한 것입니다.

결과

이것은 게이트웨이의 업스트림 메일 서버에 텔넷을 통해 얻을 수 있는 것입니다...

root@gateway:~# telnet localhost 1050
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 debian10email.debian10email ESMTP Postfix (Debian/GNU)

이것은 원격 클라이언트 시스템에서 얻은 것입니다.

client@client123:~$ telnet gateway.example.org 25
Trying <IP_of_gateway>...
Connected to gateway.example.org.
Escape character is '^]'.

우리는 또한 그 선을 볼 것으로 기대 220 debian10email.debian10email ESMTP Postfix (Debian/GNU)하지만 그렇지 않습니다.

위생 검사...

시험

포트 전달 규칙이 올바르게 작성되었는지 확인하기 위해...

  • 방화벽에서 포트 1025를 엽니다.
  • 포트 포워딩 1025에서 1050으로
  • 그런 다음 원격 클라이언트에 표시되는 내용을 확인하세요.

방화벽 조정

방화벽을 지우고, 포트를 열고, 포트 전달을 설정하고, 몇 가지 서비스를 수행하십시오.

root@gateway:~# firewall-cmd --reload
root@gateway:~# firewall-cmd --zone=public --add-port=1025/tcp
root@gateway:~# firewall-cmd --zone=public --add-forward-port=port=1025:proto=tcp:toport=1050
root@gateway:~# firewall-cmd --add-service={http,https,smtp}

방화벽 확인

root@gateway:~# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: etho0
  sources: 
  services: dhcpv6-client http https smtp ssh
  ports: 1025/tcp
  protocols: 
  masquerade: no
  forward-ports: port=1025:proto=tcp:toport=1050:toaddr=
  source-ports: 
  icmp-blocks: 
  rich rules: 

결과

client@client123:~$ telnet gateway.example.org 1025
Trying <IP_of_gateway>...
Connected to gateway.example.org.
Escape character is '^]'.
220 debian10email.debian10email ESMTP Postfix (Debian/GNU)

예상되는 라인이 있으므로 220 debian10email.debian10email ESMTP Postfix (Debian/GNU)방화벽은 예상대로 포트 전달됩니다.

결론

권한이 있는 포트와 권한이 없는 포트 간의 전달은 권한이 없는 포트 간의 전달과 다릅니다.

Debian 10 Buster에서 방화벽을 사용하여 권한 있는 하위 1024 포트를 권한 없는 1024+ 포트로 어떻게 포트 전달합니까? 어딘가에 답이 있다면 지적해주세요. 우리는 그것을 찾지 못했습니다.

답변1

방화벽 구성이 올바른 것 같습니다. 테스트한 컴퓨터가 포트 25로 나가는 연결을 허용합니까? 다른 컴퓨터에서 시도해 보세요.

관련 정보