영역 간 방화벽 전달이 작동하지 않습니다.

영역 간 방화벽 전달이 작동하지 않습니다.

NAT 네트워킹을 사용하도록 구성된 여러 가상 머신을 실행하는 centos 7 kvm 하이퍼바이저가 있습니다.

이러한 가상 머신은 서비스를 실행하며, 그중 SSH가 관리 목적으로 가장 중요합니다. Firewalld를 사용하여 가상 머신으로 전달되는 하이퍼바이저의 포트를 할당하고 싶습니다.

내 하이퍼바이저에는 다음과 같은 인터페이스가 있습니다.

3: wlp8s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 94:0c:6d:c4:b8:12 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.30/24 brd 192.168.1.255 scope global dynamic wlp8s1
       valid_lft 2627sec preferred_lft 2627sec
    inet6 2a02:a03f:268e:3e00:960c:6dff:fec4:b812/64 scope global noprefixroute dynamic
       valid_lft 345640sec preferred_lft 345640sec
    inet6 fe80::960c:6dff:fec4:b812/64 scope link
       valid_lft forever preferred_lft forever
4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 52:54:00:64:af:d6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever

wlp8s1virbr0kvms 내부 네트워크 인터페이스인 홈 네트워크에 연결하는 무선 인터페이스입니다 .

IPv4 전달 활성화:

firewall-cmd --zone=external --add-forward-port=port=2022:proto=tcp:toport=22:toaddr=192.168.122.13

저는 2개 영역을 사용하고 있습니다: externaldmz:

dmz
  interfaces: virbr0
external
  interfaces: wlp8s1

가상 머신 중 하나는 다음과 같은 네트워크 구성을 갖춘 데이터베이스 서버입니다.

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:df:79:1e brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.13/24 brd 192.168.122.255 scope global dynamic eth0
       valid_lft 2634sec preferred_lft 2634sec
    inet6 fe80::5054:ff:fedf:791e/64 scope link
       valid_lft forever preferred_lft forever

포트 22에서 수신 대기하는 sshd를 실행합니다.

# systemctl status sshd
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2016-05-22 20:08:45 CEST; 45min ago
...

# ss -ntl
State       Recv-Q Send-Q              Local Address:Port                             Peer Address:Port
LISTEN      0      128                             *:22                                          *:*
LISTEN      0      128                            :::22                                         :::*

그래서 다음 튜토리얼과 공식 문서를 시도했는데, 이를 통해 (하이퍼바이저에서) 다음 명령 체인을 찾을 수 있었습니다.

# firewall-cmd --zone=external --add-port=2022/tcp
success
# firewall-cmd --zone=external --add-forward-port=port=2022:proto=tcp:toport=22:toaddr=192.168.122.13
success

하지만 아쉽게도 (내 홈 네트워크에 연결된 노트북에서):

$ ssh 192.168.1.30 -p 2022
ssh: connect to host 192.168.1.30 port 2022: Connection refused

내가 테스트한 것들:

내 노트북에서 발행될 때 TCP 덤프 ssh 192.168.1.30 -p 2022:

하이퍼바이저에서:

# tcpdump -i wlp8s1 port 2022
21:02:50.661181 IP laptop.38052 > hypervisor.down: Flags [S], seq 885834855, win 29200, options [mss 1460,sackOK,TS val 4732781 ecr 0,nop,wscale 7], length 0

가상 머신에서 패킷이 수신되지 않습니다.

하이퍼바이저에서 VM으로 SSH를 통해 연결할 수 있습니다.

Firewalld 전달 명령을 다음과 같이 변경하면:

firewall-cmd --zone=external --add-forward-port=port=2022:proto=tcp:toport=22:toaddr=192.168.1.30

포트 2022를 사용하여 하이퍼바이저에 SSH로 연결할 수 있습니다. 지역과 관련이 있다는 뜻인가요?


제가 테스트할 수 있는 도움이나 추가 사항은 크게 감사하겠습니다! 감사해요!


폴리스티렌

방화벽이 손상되었음을 나타내는 유사한 질문을 찾았습니다. Fedora 21은 포트 전달을 위해 방화벽(firewall-cmd)을 사용합니다. 정확히 어떻게 작동합니까? 아니면 그럴까요?

하지만 제가 제공하고 싶은 추가 정보가 주어지면 여기에서 해결책을 찾을 수 있기를 바랍니다 :).

답변1

확인하고 싶은 몇 가지 구성이 있습니다. 커널 ex => net.ipv4.ip_forward=1에서 IP 전달을 켰 습니까 /etc/sysctl.conf?

또한 매스커레이딩을 활성화하려면 다음과 같은 명령을 실행해야 할 수도 있습니다.

firewall-cmd --zone=external --add-masquerade

관련 정보