NAT 네트워킹을 사용하도록 구성된 여러 VM을 실행하는 centos 7 kvm 하이퍼바이저가 있습니다.
이러한 VM은 해당 서비스를 실행하며, 그중 SSH가 관리 목적으로 가장 중요합니다. Firewalld를 사용하여 VM에 전달되는 하이퍼바이저의 포트를 할당하고 싶습니다.
내 하이퍼바이저에는 다음과 같은 인터페이스가 있습니다.
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
VM 중 하나는 다음과 같은 네트워크 구성을 가진 데이터베이스 서버입니다.
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
내가 테스트한 것들:
ssh 192.168.1.30 -p 2022
내 노트북에서 발행하는 동안 Tcp 덤프가 발생합니다 .
하이퍼바이저에서:
# 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에서는 패킷이 수신되지 않습니다.
하이퍼바이저에서 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