IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

KVM 中搭建 VLAN 和 IPv6 环境

A Geek's Page 2012-09-18 23:21:25 累计浏览 2,429 次
本机暂存

普通的 IPv4 环境很简单,如果你使用 virt-manager 的话它自动都给你搭好了。每个 kvm guest 都在同一个子网内,通过 bridge 连接到一起,然后通过 host 上的 NAT 访问外网,如下所示:

# brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		8000.5254002e2392	yes		virbr0-nic
							vnet0
							vnet1

# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  tcp  --  192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
MASQUERADE  udp  --  192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24

稍微有点儿困难的是在此基础上搭建 VLAN 和 IPv6 环境。

先看VLAN,虽然我们现在还没有 openvswitch,我们可以通过 bridge 设置一个简单的 vlan 局域网。因为 virt-manager 默认使用的是 192.168.122.0/24,我为VLAN单独开了一个 192.168.1.0/24,有两台机器 A 和 B,A 上运行此VLAN的 DHCP 服务,B 就可以直接动态获取地址了。

机器 A 上运行:

vconfig add eth0 2
ifconfig eth0.2 192.168.1.1
dnsmasq --listen-address=192.168.1.1 -i eth0.2 --dhcp-range=192.168.1.2,192.168.1.240

机器 B 上运行:

vconfig add eth0 2
dhclient eth0.2

注:vconfig 已经过时了,现在都使用 ip,我之所以还使用它是因为整个命令比较短。;-)

再来看 IPv6,因为我对 IPv6 不熟悉,所以折腾了好长时间最后还是不得不使用 sit tunnel,而且 IP 地址也是静态手工设置的。还是假设 A 和 B 两台机器,先让 IPv4 在上面跑起来,然后在两台机器上分别运行下面的命令:

echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
ip tunnel add sit1 mode sit local ${SELF} remote ${REMOTE} dev eth0
ip -6 addr add fd00:1:2:3::2/64 dev sit1
ip -6 route add fd00:1:2:3::1/64 dev sit1
ifconfig sit1 up

${SELF} 为自己的IPv4地址;${REMOTE}为对方的IPv4地址,即在A上面为B的地址,B上面为A的地址。他们的IPv6地址分别是fd00:1:2:3::1 和 fd00:1:2:3::2。

Update:如果使用 libvirt 的话,可以用 virsh net-edit <NET> 编辑网络配置,添加下面两行:

<ip family=’ipv6′ address=’fd00:1:2:3::1′ prefix=’64′>
</ip>

可参考这里

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. 计算机网络协议包头赏析-IP (累计阅读 6,007)
  2. accept_ra 的一个例子 (累计阅读 5,670)
  3. 我的内核配置文件 (累计阅读 4,812)
  4. debian开启与关闭IPV6 (累计阅读 4,265)
  5. IPv6和IPv4的掩码区别 (累计阅读 4,008)
  6. 解决 IPv6 路由发现协议得到错误地址的问题 (累计阅读 3,768)
  7. 开源世界中的算法与数据结构 3 -- Linux IPv6 FIB表实现 (累计阅读 3,282)
  8. Debian 下关闭ipv6 (累计阅读 3,233)
  9. 另外一种DSR结构 (累计阅读 2,641)
  10. 使用无线自组网共享互联网接入 (累计阅读 2,471)