Centos 7에서는 방화벽 기반 포트 전달을 사용할 수 없는 것 같습니다. 192.168.0.148:905를 192.168.56.102:22로 전달합니다. 192.168.0.148 -p 905로 SSH를 시도하면 "연결이 거부되었습니다"라는 메시지가 나타납니다.
다음은 몇 가지 관련 설정입니다.
[root@GraceDev3 log]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: br0
sources:
services: ssh dhcpv6-client https
ports: 3389/tcp 905/tcp 908/tcp
protocols:
masquerade: yes
forward-ports: port=905:proto=tcp:toport=22:toaddr=192.168.56.102
port=908:proto=tcp:toport=22:toaddr=192.168.56.105
source-ports:
icmp-blocks:
rich rules:
전달 포트:
[root@GraceDev3 log]# cat /proc/sys/net/ipv4/ip_forward
1
192.168.0.148 포트 22의 tcpdump는 도착하는 SSH 요청을 보여줍니다. Firewalld 로그에는 삭제되는 패킷이 표시되지 않습니다. 내가 무엇을 놓치고 있나요? 다른 사람들도 같은 문제를 겪고 있다는 것을 알았지만 아직 해결책을 찾지 못했습니다.
답변1
케이다음과 같은설명은 다음과 같습니다.
"NetworkManager는 방화벽에 인터페이스 영역에 대해 알려줍니다. NetworkManager, 방화벽 구성 도구 또는 방화벽 cmd 명령줄 도구를 사용하여 인터페이스에 영역을 할당할 수 있습니다. 후자의 두 가지 도구는 해당 NetworkManager 구성 파일을 간단히 편집합니다. 방화벽을 사용하는 경우 -cmd 또는 Firewall-config가 인터페이스 영역을 변경하면 요청이 NetworkManager로 전달되고 firewalld에서 처리되지 않습니다."
전달하려는 컴퓨터는 하이퍼바이저이며 NetworkManager가 비활성화되어 있습니다. 이로 인해 영역 구성이 중단되는 것 같습니다. 문제를 해결하고 보고하도록 노력하겠습니다. (또는 iptables로 전환하면 알 수 있을 것 같습니다!)
추신: 가능해 보이지만 위 내용이 문제의 원인임을 증명할 수는 없습니다. iptables로 전환하면 포트 전달이 작동할 수 있습니다. 내 경우에는 대상 컴퓨터에 직접 인터넷 연결도 있습니다(포트 22 인바운드는 허용되지 않음). 이는 반환 패킷이 돌아오는 길에 NAT를 수정하지 않는다는 것을 의미합니다. 이것은 나에게 너무 복잡해서 전달을 위해 netfilter 대신 ssh를 사용하도록 전환했는데 훌륭하게 작동했습니다!