DNS配置,也可以放到ifcfg-eth0中,DNS不是随便设置的,你可以通过host、dig、nslookup命令查询DNS,如果这些工具不存在可以通过yum install bind-utils -y来安装一下。
# 如果没有在网络配置添加DNS可以这种方式添加DNS echo "nameserver 192.168.188.1" > /etc/resolv.conf 虚拟机其它管理 virsh start centos72 # 虚拟机开启(启动): virsh reboot centos72 # 虚拟机重新启动 virsh shutdown centos72 # 虚拟机关机 virsh destroy centos72 # 强制关机(强制断电) virsh suspend centos72 # 暂停(挂起)KVM 虚拟机 virsh resume centos72 # 恢复被挂起的 KVM 虚拟机 virsh undefine centos72 # 该方法只删除配置文件,磁盘文件未删除 virsh autostart centos72 # 随物理机启动而启动(开机启动) virsh autostart --disable centos72 # 取消标记为自动开始(取消开机启动) 配置物理机网络目前我只有一个固定IP,通过配置eno2,网桥当做路由器,虚拟机共享物理机进出网络。物理机网络配置,网络进出走eno2 编辑vi /etc/sysconfig/network-scripts/ifcfg-eno2
TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no NAME=eno2 UUID=f66c303e-994a-43cf-bd91-bb897dc2088d DEVICE=eno2 ONBOOT=yes IPADDR=<这里固定IP配置的地方> # 设置IP地址 PREFIX=24 # 设置子网掩码 GATEWAY=<这里设置网关> # 设置网关 DNS1=<这里设置DNS> # DNSifcfg-br0 桥接网卡配置在同一个目录中。
TYPE=Bridge BOOTPROTO=static NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR=192.168.120.1 PREFIX=24ifcfg-eno1 物理网卡指定桥接网卡BRIDGE="br0"
TYPE=Ethernet BOOTPROTO=none NAME=eno1 DEVICE=eno1 ONBOOT=yes BRIDGE="br0"配置路由转发vi /etc/sysctl.conf
# Controls IP packet forwarding net.ipv4.ip_forward = 0 # 修改为 # Controls IP packet forwarding net.ipv4.ip_forward = 1 # 允许内置路由 # 再执行 `sysctl -p` 使其生效 端口转发现在我们还以上述VM为例,目前该KVM的公网IP为211.11.61.7,VM的IP为192.168.188.115,现在我要求通过访问KVM的2222端口访问VM的22端口。
编辑vi /etc/rc.d/rc.local 添加下面命令,达到开机重启配置网络转发规则。
# 启动网络转发规则 iptables -t nat -A : -s 192.168.188.0/24 -j SNAT --to-source 211.11.61.7 iptables -t nat -A POSTROUTING -s 192.168.188.0/24 -j SNAT --to-source 211.11.61.7 iptables -t nat -A PREROUTING -d 211.11.61.7 -p tcp --dport 2222 -j DNAT --to-dest 192.168.188.115:22 iptables -t nat -A PREROUTING -d 211.11.61.7 -p tcp --dport 2221 -j DNAT --to-dest 192.168.188.115:21 # 实际效果可以通过外网连接虚拟机 ssh -p 2222 root@211.11.61.7通过iptables命令来设置转发规则,源SNAT规则,源网络地址转换,SNAT就是重写包的源IP地址。
# 数据包进行 源NAT(SNAT),系统先路由——>再过滤(FORWARD)——>最后才进行POSTROUTING SNAT地址翻译 # -t<表>:指定要操纵的表; # -A:向规则链中添加条目; # -s:指定要匹配的数据包源ip地址; # -j<目标>:指定要跳转的目标; # -j SNAT:源网络地址转换,SNAT就是重写包的源IP地址 # --to-source ipaddr[-ipaddr][:port-port] # 它可以指定单个新的源IP地址,IP地址的包含范围,以及可选的端口范围(仅当规则还指定-p tcp或-p udp时才有效)。 # 如果没有指定端口范围,则低于512的源端口将映射到512以下的其他端口:512和1023之间的端口将映射到低于1024的端口, # 其他端口将被映射到1024或更高。 在可能的情况下,不会发生港口更改。 # 在内核高达2.6.10,您可以添加几个 - 源选项。 # 对于这些内核,如果通过地址范围或多个源选项指定多个源地址,则会在这些地址之间进行简单的循环(循环中循环)。 # 后来的内核(> = 2.6.11-rc1)不再具有NAT到多个范围的能力。 iptables -t nat -A POSTROUTING -s 192.168.120.0/24 -j SNAT --to-source <固定IP> # cat /etc/sysconfig/iptables 公网访问虚拟机通过公网ip 192.168.188.222端口2280,转发到虚拟机192.168.111.133:80上面
iptables -t nat -A PREROUTING -d 192.168.188.222 -p tcp --dport 2280 -j DNAT --to-dest 192.168.111.133:80重启并保存 iptables 配置。
# 保存 service iptables save # 重启 service iptables restart 配置宿主机网络KVM 虚拟机是基于 NAT 的网络配置;
只有同一宿主机的虚拟键之间可以互相访问,跨宿主机是不能访问;
虚拟机需要和宿主机配置成桥接模式,以便虚拟机可以在局域网内可见;
Bridge模式配置