HOO八卦
妖魔鬼怪快离开

Proxmox VE三种方法配置NAT小鸡和IPv6地址

武汉联通已经开启了IPv6全网部署,这个下次再写(咕咕咕),今天来折腾一下Proxmox VE环境下分配NAT小鸡和IPv6公网地址。

背景介绍

有许多人是长期玩过各种小鸡却没当过奸商服务商的,于是乎手痒想买点母鸡体验体验当鸡头服务商的快感。博主也是一样,所以在美帝堪萨斯城著名垃圾佬机房Wholesaleinternet(Nocix、Datashack)租的辣鸡母鸡想体验一把。由于普遍这种辣鸡母鸡不支持IPMI(online、hentzer、二道贩子oneprovider之流),也不能自己挂ISO,只能从服务商提供的各类远古时期镜像里面进行选择,比如Proxmox VE 3或者Xenserver 6.2/6.5(仅限wholesaleinternet之流)。从头到尾只用过Xenserver 6.5 开心版XenSystem、ESXi 6.0、ESXi 6.5这几个虚拟化环境(ESXi还是在online机器上试用的)。

由于服务商提供的远古镜像版本太老,加上一直用开心版XenSystem感觉不合适,所以就想着搞个Proxmox VE玩玩。主要是因为Proxmox VE一个不花钱,再一个是图形面板,比较适合我们这种进入懒癌晚期的95后中老年人。同时也是由于Xen的某些蛋疼特性、ESXi没有路由和转发功能,加上一直想试试IPv6的骚操作,所以一共就折腾了”Debian 7升级Debian 8升级Debian 9安装Proxmox VE 5″和”在Proxmox VE中给小鸡配置IPv4内网 IPv6公网的操作”(对你没看错,最新的Debian镜像竟然是上古版本Debian 7,这个后面写,咕咕咕)

介绍完毕,下面是配置IPv6小鸡的三种方法,其中两种是NAT。

Proxmox VE是一个代码遵循GNU/AGPLv3协议开源的集成LXC(OpenVZ)和KVM的虚拟化平台。除了商业服务需要采用订阅模式付费外,平台所有功能都是免费使用的。由于使用LXC和KVM,加上协议不同,导致其与VMWare、Xenserver和Hyper-V等商业化更重的平台相比,开放度更高,故有很多人选择使用Proxmox VE作为个人或小团队使用的虚拟化平台。其实其也支持很多如集群、HA等高级特性,完全可以在中大型环境下使用。

一、土豪法(非NAT)

废话部分

首先,辣鸡母鸡包含以下配置:

  • CPU:FX-6300
  • RAM:16GB DDR3
  • 储存:240G SSD 2×1T HDD
  • 端口:100TB流量 – 1000M口
  • IP:/29 IPv4地址 /64 IPv6地址

/29其实上可用IP是5个,抛去母鸡系统占一个还剩4个。IPv6地址/64导致下级设备不能获取更小的前缀进行自动配置,而且服务商没开DHCPV6和SLAAC(貌似wholesaleinternet开了但是nocix没开?可能是我的锅),所以必须要手工配置。

由于我这里本地运营商开启了IPv6(湖北联通,yes!),所以有一个省IP的玩法:给小鸡配内网IPv4 公网IPv6上网。至于用来干嘛,大家就自由发挥~

好,废话说了半天,先来介绍土豪法:有多少有几个小鸡用几个IP

配置桥接

其实本方法也就是入门的Proxmox VE网络配置方法。如果有人和我一样是从Debian 9通过apt安装的Proxmox VE,那么第一个问题就是Debian 9默认是直接在eth0上配置IP来上网的。而要开小鸡上网,就要先配置桥接接口。

通过SSH登录,su提升到root权限,编辑/etc/network/interfaces写入下面类似的配置文件,新建一个vmbr0接口,桥接到eth0接口上

auto vmbr0
iface vmbr0 inet static
        address  192.187.*.*
        netmask  255.255.255.248
        gateway  192.187.*.*
        bridge-ports eth0
        bridge-stp off
        bridge-fd 0

同时,要将iface eth0 inet manual中的相关信息删掉。最后执行service networking restart使配置生效。
此时,在Proxmox VE控制台应该能看到名称为vmbr0类型为Linux Bridge的设备了。那么下一步,就是建立小鸡,并为小鸡配置IP地址。
LXC小鸡在建立的时候选择vmbr0并填写IP信息即可

建立并配置小鸡

KVM小鸡由于虚拟化原因,需要安装完成进入系统之后设置,根据系统类型的不同修改IP配置,在同一个接口上配置v4和v6地址即可。

土豪配置简单来说就是使用一个桥接接口,给每个小鸡配置一个或者多个公网IPv4地址 IPv6地址,这种方式比较比较简单,适合建立需要v4 v6双栈访问的服务器,如web之类的。

那么问题来了:如果我IP比较少怎么办?比如online的只有1个IP,或者只加了1个IP共两个IP怎么办?

二、省钱法

1、单IP

同上,如果你是使用Debian安装上来的话,需要先把eth0(或者eno之类的)接口信息改到vmbr0上,以便于建立小鸡使用。

配置母鸡网络信息

在这一步中,主要目的是建立一个承载内网IP的虚拟适配器,通过iptables的SNAT或者MASQUERADE转发数据包到公网地址上,实现小鸡能够通过IPv4联网。

同样的,需要修改/etc/network/interfaces文件,除了上一方法中提到的vmbr0之外,还需要新建一个vmbr2适配器

auto vmbr2
iface vmbr2 inet static
        address  10.10.10.1
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0

        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A POSTROUTING -s \\'10.10.10.0/24\\' -o vmbr0 -j SNAT --to 192.187.*.*
        post-down iptables -t nat -D POSTROUTING -s \\'10.10.10.0/24\\' -o vmbr0 -j SNAT --to 192.187.*.*

此处的配置文件主要是建立一个vmbr2的接口,IP地址为10.10.10.1(将作为小鸡网关地址)并不桥接到任何端口,且在接口上线时给iptables增加一条NAT规则,将所有10.10.10.0/24的数据包转发到公网192.187.*.*地址上。这里的SNAT也可以使用MASQUERADE替代,根据你的网络情况和个人需求自行选择类型和地址。

配置小鸡网络信息

那么,现在我们拥有了2个可以给小鸡用的接口vmbr0vmbr2,那么下一步的操作就很明显了,给小鸡分配2个接口,其中一个提供IPv4内网地址,一个提供IPv6公网地址。

在前面提到的添加接口的基础上,前往Proxmox VE面板的小鸡网络选项界面(此处以LXC为例),选择添加,并在“桥接”一栏选择vmbr2接口,在此接口上配置IPv4的内网地址,在vmbr0接口上配置IPv6地址。
若为KVM小鸡,则在小鸡硬件中选择添加-网络设备,桥接到vmbr2上,并在系统内编辑相应的设备配置文件即可。

检查配置

开启小鸡后,检查网络配置。

[root@IPv6-from-NAT ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
13: eth0@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether ae:4e:9b:85:54:ad brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.10.10.123/24 brd 10.10.10.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::ac4e:9bff:fe85:54ad/64 scope link
       valid_lft forever preferred_lft forever
15: eth6@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 12:98:54:4c:39:f6 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 2604:4300:*:*:*::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::1098:54ff:fe4c:39f6/64 scope link
       valid_lft forever preferred_lft forever
[root@IPv6-from-NAT ~]# ping6 www.google.com
PING www.google.com(dfw06s49-in-x04.1e100.net (2607:f8b0:4000:80d::2004)) 56 data bytes
64 bytes from dfw06s49-in-x04.1e100.net (2607:f8b0:4000:80d::2004): icmp_seq=1 ttl=55 time=69.8 ms
64 bytes from dfw06s49-in-x04.1e100.net (2607:f8b0:4000:80d::2004): icmp_seq=2 ttl=55 time=18.3 ms
64 bytes from dfw06s49-in-x04.1e100.net (2607:f8b0:4000:80d::2004): icmp_seq=3 ttl=55 time=18.2 ms

--- www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 18.261/35.487/69.892/24.328 ms
[root@IPv6-from-NAT ~]# ping www.google.com
PING www.google.com (216.58.194.132) 56(84) bytes of data.
64 bytes from dfw06s49-in-f132.1e100.net (216.58.194.132): icmp_seq=1 ttl=51 time=48.5 ms
64 bytes from dfw06s49-in-f132.1e100.net (216.58.194.132): icmp_seq=2 ttl=51 time=48.6 ms
64 bytes from dfw06s49-in-f132.1e100.net (216.58.194.132): icmp_seq=3 ttl=51 time=48.7 ms

--- www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 48.531/48.653/48.762/0.271 ms

期中一个适配器应有inet 内网IPv4地址另一个适配器应有inet6 公网IPv6,且能同时访问IPv4与IPv6网络,则说明配置成功。

额外说明

在此网络环境下,若想实现IPv4远程访问小鸡,需要利用DNAT将IPv4公网地址端口映射到某内网地址上。若要实现web访问,可以尝试使用nginx或其他反向代理程序。
公网IPv6可直接访问。

2、双IP

可能会有人说到一个问题:在母鸡上同时要搞桥接、要搞反向代理、要搞端口映射,甚至有可能需要更多复杂的操作,怕把配置搞乱了,而且操作起来很蛋疼,咋整?
若是IPv4地址有空余的情况下(母鸡共有2个及以上公网IPv4),可以选择建立一个软路由实现对小鸡IPv4内网地址的配置,同时兼职防火墙、反向代理、端口转发什么的,既可以避免由于配置出错造成不必要的麻烦,也可以更为直观的进行调整。但若IPv6地址只有/64则无法在软路由上进行配置,需要额外调整(或者说我暂时没学会QAQ)。所以先说说IPv4部分。

软路由的选择

如果是折腾路由器的朋友,经常接触的路由系统无非是LEDE(Openwrt)/DD-wrt/Tomato/Padavan/iKuai等等。若是用于跑小鸡的话,这里推荐大家使用开源的pfSense防火墙(对你没看错,人家是当防火墙用的)。

首要原因当然是配置比较方便,在pfSense官网下载(https://www.pfsense.org/download/ )最新版本的ISO安装包,保存到Proxmox VE的镜像文件夹,创建一个虚拟机安装就行。

第二个原因是有中!文!界!面!是不是已经对整篇幅的英文感到头痛了?没错,pfSense从2.4.x版本开始内置了国内大神翻译的全中文语言包,直接在系统设置内选择就行。

最后一个原因是pfSense基于FreeBSD的,其本身支持众多插件扩展,包括Haproxy实现反向代理及负载均衡、ACME自动签发、squid反向代理、cron设定等等,同时防火墙规则和其他设置十分细致,如果配置得当可以实现很多功能。

当然,大神用LEDE或者RouterOS也可以实现,我们这种懒人就按下不表,先说说pfsense的配置。

准备安装pfsense

首先,SSH登录服务器,跳转到iso储存路径下,下载pfSense最新版ISO安装镜像。

root@kansas:/home/*# cd /datastore/iso1/template/iso
root@kansas:/datastore/iso1/template/iso# wget https://atxfiles.pfsense.org/mirror/downloads/pfSense-CE-2.4.3-RELEASE-amd64.iso.gz
--2018-08-11 12:38:48--  https://atxfiles.pfsense.org/mirror/downloads/pfSense-CE-2.4.3-RELEASE-amd64.iso.gz
Resolving atxfiles.pfsense.org (atxfiles.pfsense.org)... 2610:160:11:11::81, 208.123.73.81
Connecting to atxfiles.pfsense.org (atxfiles.pfsense.org)|2610:160:11:11::81|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 319675629 (305M) [application/octet-stream]
Saving to: \\'pfSense-CE-2.4.3-RELEASE-amd64.iso.gz\\'

pfSense-CE-2.4.3-RELEASE 100%[==================================>] 304.87M  53.8MB/s    in 7.3s

2018-08-11 12:38:56 (41.6 MB/s) - \\'pfSense-CE-2.4.3-RELEASE-amd64.iso.gz\\' saved [319675629/319675629]
root@kansas:/datastore/iso1/template/iso# gzip -d pfSense-CE-2.4.3-RELEASE-amd64.iso.gz

新建一个名为vmbr999的接口,不桥接到任何地址,也不配置地址,用于作为软路由LAN口

auto vmbr999
iface vmbr999 inet manual
        bridge-ports none
        bridge-stp off
        bridge-fd 0

新建一个KVM虚拟机,建议配置1G内存以上,在设备配置中同时配置vmbr0vmbr999两个接口,前者作为WAN,后者作为LAN使用。

安装pfsense

启动已经挂载安装ISO的虚拟机(IP太多懒得打码了)

将会自动从ISO启动,在此页面下可以保持默认,直接进入安装程序

遵循默认,一路回车即可

安装完成后,如下图,会提示是否需要开启shell进行手工配置,此处可以选择否,然后选择Reboot进入pfSense控制台手工配置,较为方便。

配置pfsense

首次启动时,如下图,会提示进行系统配置

自上而下的配置是:是否设置VLAN、WAN接口设置为vtnet0(对应vmbr0)、LAN接口设置为vtnet1(对应vmbr999)、确认开始执行配置

执行完成后系统会自动reload,此时可以看到WAN接口上暂无IP,这是因为默认配置为DHCP自动获取,此时在控制台输入数字2,按回车进入接口IP配置界面

如上图,根据自己的IP地址、子网大小、网关地址分别设定

此时,会提示设定IPv6信息。由于我的服务商只给了一个/64子网,没有可以分配的子网前缀,所以这里选择不开启从DHCPv6获取IP,也不设置IPv6地址(小鸡不通过pfSense配置IPv6)。同时,不选择使用HTTP替代HTTPS进行Web管理,最后按回车执行配置。

此时,可以尝试使用https://你的公网IP来访问pfSense的网页配置界面,但无法访问。这是因为pfSense默认防火墙不允许通过WAN接口地址访问管理界面,需要修改防火墙设定。在控制台输入8,按回车进入shell界面。

执行easyrule可以查看命令帮助,允许通过防火墙的命令格式为

easyrule pass 接口名 协议 客户端IP地址 服务端IP地址 端口号

此时,我们需要在公网地址上访问采用https的web管理界面,那么应使用如上图的命令

easyrule pass wan tcp any 192.187.110.158 443

此处的any是代表任意主机,建议为安全起见,用你本地的公网IP替代。

此时,使用浏览器访问https://192.187.110.158即可正常打开pfSense控制台,默认账号为admin,默认密码为pfsense,高级配置和插件安装等功能可进入web管理界面进行配置。

配置小鸡

按正常方法新建LXC或KVM虚拟机,并在设备配置中同时配置vmbr0vmbr999两个接口即可。根据需要和系统不同,在vmbr0接口上配置IPv6地址,在vmbr999接口上配置与pfSense中LAN接口同一网段地址(或使用DHCP),此时小鸡应同时能够通过IPv4和IPv6地址上网。如下:

[root@IPv6-from-pfsense ~]# ifconfig
-bash: ifconfig: command not found
[root@IPv6-from-pfsense ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
6: eth6@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 02:42:31:87:31:c8 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 2604:4300:a:8f:2000::2/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::42:31ff:fe87:31c8/64 scope link
       valid_lft forever preferred_lft forever
8: eth4@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether c6:0e:39:0a:37:09 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.1.101/24 brd 192.168.1.255 scope global dynamic eth4
       valid_lft 2608sec preferred_lft 2608sec
    inet6 fe80::c40e:39ff:fe0a:3709/64 scope link
       valid_lft forever preferred_lft forever
[root@IPv6-from-pfsense ~]# ping www.google.com
PING www.google.com (172.217.14.164) 56(84) bytes of data.
64 bytes from dfw28s22-in-f4.1e100.net (172.217.14.164): icmp_seq=1 ttl=51 time=41.9 ms
64 bytes from dfw28s22-in-f4.1e100.net (172.217.14.164): icmp_seq=2 ttl=51 time=41.8 ms
64 bytes from dfw28s22-in-f4.1e100.net (172.217.14.164): icmp_seq=3 ttl=51 time=42.0 ms

--- www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 41.826/41.948/42.044/0.090 ms
[root@IPv6-from-pfsense ~]# ping6 www.google.com
PING www.google.com(dfw28s22-in-x04.1e100.net (2607:f8b0:4000:806::2004)) 56 data bytes
64 bytes from dfw28s22-in-x04.1e100.net (2607:f8b0:4000:806::2004): icmp_seq=1 ttl=55 time=80.7 ms
64 bytes from dfw28s22-in-x04.1e100.net (2607:f8b0:4000:806::2004): icmp_seq=2 ttl=55 time=18.1 ms
64 bytes from dfw28s22-in-x04.1e100.net (2607:f8b0:4000:806::2004): icmp_seq=3 ttl=55 time=18.0 ms

--- www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 18.031/38.986/80.790/29.560 ms

额外说明

其实方法2和方法3原理差不多的,只不过一个是由母鸡操作系统的iptables防火墙进行数据包处理,一个是由专门的虚拟机来进行处理。方法3的好处就是虽然多用了一个IP,但避免了操作母鸡操作系统配置导致的各类问题,而且功能使用更为直观点。

若使用软路由方法,想从公网IPv4地址直接访问内网设备,可以在pfSense中通过web控制台直接进行配置,如安装squid或haproxy实现反向代理、负载均衡访问内网web服务,stunnel加密隧道访问内网特定端口、通过防火墙设定做端口映射等等。

若服务商分配的IP地址大于/64,如/60或/56,或者是单独给一个可分配的子网前缀,更是可以将这个前缀添加到pfSense,实现IPv4 IPv6均通过防火墙访问。

pfSense的中文选择在System – General Setting菜单中的Language选项中选择。

https://www.imfan.net/geek/20.html

赞(0)
未经允许不得转载:HOO八卦 » Proxmox VE三种方法配置NAT小鸡和IPv6地址
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

Find More Interest

Contactsthrough