我在 Fedora 22 主机上使用桥接网络运行了一些 KVM 客户机。除了一个小问题外,一切似乎都运行良好。其中一个客户机上运行着 apache。对客户机上 Web 服务器的任何访问都会在日志中显示主机的 IP 地址,而不是实际源的 IP 地址。客户机上的“who -mu”还显示 KVM 物理主机的 IP 地址(或者更确切地说是主机名),而不是我进行 SSH 连接的实际源 IP。
例如:
我从 10.10.10.3(物理 Debian 主机)通过 SSH 连接到 10.10.10.5(Ubuntu KVM 客户机,运行在物理 Fedora 22 主机 10.10.10.4 上)。当我成功登录到 10.10.10.5 并执行“who -mu”时,我看到的是 10.10.10.4 机器的主机名,而不是 10.10.10.3 机器的主机名。同样,如果我从 10.10.10.3 机器访问 10.10.10.5 上的 Apache 页面,Apache 日志中显示的是 10.10.10.4。
这是我的 ifcfg-br0:
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
IPADDR=10.10.10.4
NETMASK=255.255.255.0
GATEWAY=10.10.10.22
DNS1=10.10.10.22
SEARCH="example.co"
ONBOOT=yes
NM_CONTROLLED=no
IPV6INIT=no
STP=on
以及 ifcfg-enp2s0 (Fedora 主机上的物理适配器:
TYPE=Ethernet
DEVICE=enp2s0
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no
有人知道我需要做什么才能使源 IP 地址显示正确吗?我假设 Fedora 主机上有一些 iptables-fu?
编辑:根据要求添加了 iptables 输出。这些来自运行 virsh 的框:
>
# iptables -vnL
Chain INPUT (policy ACCEPT 26M packets, 65G bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
Chain FORWARD (policy ACCEPT 72720 packets, 14M bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED
0 0 ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0
0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
1340M 1496G DOCKER-ISOLATION all -- * * 0.0.0.0/0 0.0.0.0/0
805M 1454G DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
805M 1454G ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
535M 42G ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 27M packets, 1068G bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
Chain DOCKER (1 references)
pkts bytes target prot opt in out source destination
31058 4176K ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.2 tcp dpt:80
5388 265K ACCEPT tcp -- !docker0 docker0 0.0.0.0/0 172.17.0.2 tcp dpt:22
Chain DOCKER-ISOLATION (1 references)
pkts bytes target prot opt in out source destination
1340M 1496G RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
# iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 3676K packets, 277M bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 10.10.10.4 tcp dpt:443 to:10.10.10.106:443
0 0 DNAT tcp -- * * 0.0.0.0/0 10.10.10.4 tcp dpt:8443 to:10.10.10.50:10000
0 0 DNAT tcp -- * * 0.0.0.0/0 10.10.10.4 tcp dpt:5223 to:10.10.10.50:4040
0 0 DNAT tcp -- * * 0.0.0.0/0 10.10.10.4 tcp dpt:4040 to:10.10.10.50:4040
0 0 DNAT tcp -- * * 0.0.0.0/0 10.10.10.4 tcp dpt:81 to:10.10.10.4:80
24172 6451K DOCKER all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT 165K packets, 65M bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 53577 packets, 6455K bytes)
pkts bytes target prot opt in out source destination
3390 251K DOCKER all -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2 622 RETURN all -- * * 192.168.122.0/24 224.0.0.0/24
0 0 RETURN all -- * * 192.168.122.0/24 255.255.255.255
0 0 MASQUERADE tcp -- * * 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
0 0 MASQUERADE udp -- * * 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
0 0 MASQUERADE all -- * * 192.168.122.0/24 !192.168.122.0/24
3506K 210M MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0
67578 8512K MASQUERADE all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 MASQUERADE tcp -- * * 172.17.0.2 172.17.0.2 tcp dpt:80
0 0 MASQUERADE tcp -- * * 172.17.0.2 172.17.0.2 tcp dpt:22
Chain DOCKER (2 references)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0
5716 343K DNAT tcp -- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:32180 to:172.17.0.2:80
1133 67980 DNAT tcp -- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:32122 to:172.17.0.2:22