简介
Bridged桥接:
可以实现局域网内相互访问,为其配置一套网络IP,一般宿主机作为桥接网关。
NAT:
桥接后的各个虚拟机可以互相访问,但是不能访问外网,这里用来实现虚拟机访问外网;
host-only:
这里用得少,暂时不介绍
桥接步骤: 宿主机添加网桥配置后,虚拟机地址配置相应的静态地址;
Nat步骤: 宿主机开启路由转发,iptables 地址转换后,虚拟机网络配置DNS
重启网络
service network restart
/etc/init.d/networking restart
iptables 地址转换
#查看
iptables -L -n -t nat
#网段地址转发
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to 192.168.1.1
route 路由命令
#查看路由
route
#删除网关
route del default gw 192.168.2.1
#添加临时路由
route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1
#永久添加路由
route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1
网桥命令
#查看
brctl show
#删除
brctl delbr br0
防火墙命令
ubuntu下Bridge&NAT
引文
S1: 修改宿主机创建br0文件,然后重启网络
文件路径: /etc/network/interfaces
文件内容:
auto br0
iface br0 inet static
address 192.168.4.1 # br0 的 ip 在192.168.4.0\24
netmask 255.255.255.0
#bridge_ports enp1s0 # 实验发现,这里没必要将 host 的实体接口桥接,所以注释了起来
bridge_ports none # 但是又发现,这里不设置这个参数会导致网桥创建失败,所以我们可以
# 写一个不存在的接口来混过这个检查,比如我这里写了个 none
bridge_stp on
S2: 修改虚拟机的网络配置文件,然后重启网络
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto ens3
iface ens3 inet static
address 192.168.4.101 # 这个 ip 为手动指定,应在 br0 的同一网段
netmask 255.255.255.0
gateway 192.168.4.1 # 这里应该设置成 host 中 br0 的 ip,
# 相当于创建了默认到 br0 ip 的路由
#up route add default gw 192.168.4.1 dev ens3 # 经过实验,这句于上一句效果等
# 价,二者留一即可,所以注释掉了
PS:如果是虚拟机的话,需要配置下/etc/qemu/bridge.conf,并且以网桥方式启动虚拟机;
S3 NAT配置,实现虚拟机外网上网,宿主机开启路由转发
编辑 /etc/sysctl.conf 配置文件,将 net.ipv4.ip_forward = 0 修改为net.ipv4.ip_forward = 1, 重启 host
S4: 宿主机利用 iptables 搭建 MASQUERADE 模式的 NAT
# 第一条命令中将 192.168.4.0\24 网段的数据包伪装成 wlp2s0 接口的 ip
# 发送出去,所以要实现 guest 通过 NAT 共享上网,wlp2s0 处应该填写连入
# 互联网的网络接口,这里 wlp2s0 是我的无线网卡接口。
iptables -t nat -A POSTROUTING -s "192.168.4.0/255.255.255.0" -o wlp2s0 -j MASQUERADE
# 第一条命令中将 192.168.4.0\24 网段的数据包伪装成 192.168.4.0\24 外的任何 ip
# 发送出去,按我的理解 iptables 会自动判断哪些 ip 可以成为伪装的目标,所以这条命令
# 可能更加通用。
iptables -t nat -A POSTROUTING -s "192.168.4.0/255.255.255.0" ! -d "192.168.4.0/255.255.255.0" -j MASQUERADE
PS1:基于接口的方式有时不成功,可以直接通过
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to 192.168.1.1
PS2: iptables 查阅
iptables -L -n -t nat
S5 虚拟机修改网络配置文件
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto ens3
iface ens3 inet static
address 192.168.4.101 # 这个 ip 为手动指定,应在 br0 的同一网段
netmask 255.255.255.0
gateway 192.168.4.1 # 这里应该设置成 host 中 br0 的 ip,相当于创建了默认到 br0 ip 的路由
#up route add default gw 192.168.4.1 dev ens3 # 经过实验,这句于上一句效果等价,二者留一即可,所以注释掉了
dns-nameservers 192.168.3.1 # 将 dns 服务器设置为我的路由器 ip 即可
Centos下Bridge&NAT
桥接步骤差不多,但是配置文件不同,这里列出下相应的配置文件
S1 宿主机br0网桥文件
网桥文件路径:/etc/sysconfig/network-scripts/ifcfg-br0
文件内容:
TYPE=Bridge
ONBOOT=yes
DEVICE=br0
BOOTRPOTO=static
IPADDR=192.168.3.11
NETMASK=255.255.255.0
有线网接口文件路径:/etc/sysconfig/network-scripts/ifcfg-enp2s0
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp2s0
UUID=a7091b88-1d8b-4d80-8bd8-c5026a65a242
DEVICE=enp2s0
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
BRIDGE=br0
#最后一行加一下就可以
S3 宿主机开启路由转换
查看 sysctl -p
S4 虚拟机网络配置
文件路径:/etc/sysconfig/network-scripts/ifcfg-ens3
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.3.13 # 桥接用
GATEWAY=192.168.3.11 #桥接用
NETMASK=255.255.255.0 #桥接用
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens3
UUID=81a72b21-3338-41fb-a674-a9e3cf1c5920
DEVICE=ens3
ONBOOT=yes
DNS1=192.168.1.1 #NAT用
PS: iptables 再次注意下
网友评论