區域之間的 Firewalld 轉送不起作用

區域之間的 Firewalld 轉送不起作用

我有一個 centos 7 kvm 管理程序,運行多個配置為使用 NAT 網路的虛擬機器。

這些虛擬機器運行它們的服務,其中 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 個區域: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

並正在執行 sshd 監聽埠 22:

# 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

虛擬機器上沒有收到任何資料包

我可以從虛擬機管理程式 ssh 到虛擬機

如果我將firewalld轉發命令更改為:

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

我可以使用連接埠 2022 ssh 進入虛擬機器管理程式。


任何我可以測試的幫助或額外的東西將不勝感激!謝謝!


聚苯乙烯

我確實發現這個類似的問題表明防火牆已損壞: Fedora 21 使用firewalld (firewall-cmd) 進行連接埠轉送;它到底是如何運作的?或者,是嗎?

但鑑於我希望提供的額外信息,我希望在這裡找到解決方案:)。

答案1

您可能想要檢查一些配置。您是否在內核 ex net.ipv4.ip_forward=1=>中開啟了 ip 轉送/etc/sysctl.conf

此外,您可能需要執行這樣的命令來啟用偽裝:

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

相關內容