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
wlp8s1
virbr0
kvms 내부 네트워크 인터페이스인 홈 네트워크에 연결하는 무선 인터페이스입니다 .
IPv4 전달 활성화:
firewall-cmd --zone=external --add-forward-port=port=2022:proto=tcp:toport=22:toaddr=192.168.122.13
저는 2개 영역을 사용하고 있습니다: external
및 dmz
:
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