lala.im:Hetzner独服使用Proxmox开设LXC架构的NAT小鸡

運維技術·lala.im · 2018-04-30 · 134 人浏览

原文地址:https://lala.im/3252.html,請支持原作者!該處僅作轉載。

Hetzner独服用Proxmox开NAT机器的整个配置过程还是有点复杂的,这里记录下,留给需要的人。
这套方案可行是可行,但是想拿来做销售的话,估计不怎么现实,因为很多东西都要手动配置,搞线上的话,最好是全自动化开通,很显然这套方案只适合自己虚拟几个小鸡玩玩,或是卖几个给认识的朋友。。。
话不多说,先登上你的Hetzner后台,激活救援模式:

範例
接着在后台执行硬重启:

範例
重启完成后用Xshell登录到你的救援系统内,可以看到如下图界面:

範例
执行命令:

installimage

在弹出的窗口中选择Other:

範例
选择如图所示的系统:

範例
直接回车不用管:

範例
还是直接回车,这是提醒你待会要设置硬盘RAID:

範例
现在你可以看到配置文件了,在这里首先把硬盘RAID改成0,如图所示:

範例
接着往下翻,看到分区这块,因为我们是安装Proxmox,由于Proxmox的特性,Proxmox默认是把程序的所有数据都保存到/var/lib/vz中去的,所以我们可以把大部分硬盘空间都划分给/var/lib/vz。而系统本身的话,我建议留100G就够了,划分配置如图所示:

範例
修改好了后,直接按键盘F10,选择YES保存配置:

範例
警告你是否要继续,直接回车:

範例
还是回车:

範例
接着就是等了,大概10分钟左右就安装完成了,成功后会出现如下界面:

範例
执行命令重启机器:

reboot

等机器开机后,访问地址:https://你的服务器公网IP:8006
不出意外的话就可以打开Proxmox的WEB界面了。请注意,地址的协议是https,不是http哦。
登录的用户名是root,密码就是你服务器SSH的root密码,登录界面可以选择中文:

範例
OK,我们登录进去之后先什么都不要做,回到Xshell中来,编辑一下网卡配置文件:

nano /etc/network/interfaces

我这台机器默认的网卡配置是这样的:

範例
因为Proxmox创建VPS的时候,必须要用到一个vmbr0的网卡,而我们的机器内没有,所以这里要自己创建一个,其实我们在Proxmox的WEB界面里面也能添加vmbr0,但是我们要开的是NAT小鸡,关于NAT的一些转发配置还是要更改这个网卡配置文件,所以我们不如直接手动一次性都改了。
你们可以直接复制我的这份网卡信息:

auto vmbr0
iface vmbr0 inet static
  address 192.168.0.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 '192.168.0.0/24' -o enp4s0 -j MASQUERADE
  post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o enp4s0 -j MASQUERADE

上面的这段加在up route add -net后面就行了,如图所示:

範例
注意:每台机器的网卡名都不一样,比如我这台的网卡名是enp4s0,你们的如果不是这个名字,就要改成你们自己的,查看机器网卡名的方法,执行命令:

ifconfig

有公网IP的那一个就是:

範例
最后我们重启网络服务:

/etc/init.d/networking restart

如果你的配置信息写的都是正确的,可以看到服务能重启成功,否则就要自行更改:

範例
接着,我们要开启Hetzner母鸡内的ipv4转发功能。有人可能会问,之前你的网卡配置里面不是已经做了ipv4转发吗?为什么还要做?之前我们是通过向/proc/sys/net/ipv4/ip_forward这个文件写入1来开启机器的ipv4转发,但这个并不一定在所有机器上都能生效,比如现在的Hetzner它其实是没生效的,因为Hetzner的系统调用了sysctl.conf。
所以,我们直接修改sysctl.conf:

nano /etc/sysctl.conf

把这个配置文件内如图所示的前面两个#号去掉:

範例
让新设置生效:

sysctl -p

回显如下图内容就说明成功了:

範例
现在我们回到Proxmox的WEB界面,对Proxmox进行一些设置。
首先我们要开设的是LXC架构的小鸡,那么我们可以直接在Proxmox的后台下载系统模版,操作方法如图所示:

範例
在弹出的新窗口中就可以选择你需要的系统模版来下载了:

範例
值得注意的是,在Proxmox中,我们不但可以开设LXC架构的小鸡,还能开设KVM架构的,但KVM架构,Proxmox默认是不提供系统模版的,如果需要开设KVM的机器,则我们要自己下载ISO文件到对应的路径,路径如下:
KVM模版存放路径:

/var/lib/vz/template/iso

LXC(OpenVZ):

/var/lib/vz/template/cache

OK,现在我们就可以尝试使用Proxmox来开设自己的第一台小鸡了。
首先,在Proxmox的右上角,有如图两个创建小鸡的选项:

範例
这里,创建虚拟机就是开KVM架构的机器,创建CT就是开LXC架构的机器,所以,这里我们选择创建CT。
第一步设置主机名和系统root密码:

範例
第二步选择系统模版,这里就可以选择我们之前下载好的系统模版:

範例
第三步设置硬盘大小,需要注意的是LXC的机器硬盘可以自由扩容,但很难自由缩小,所以我们可以先创建一个比较小的硬盘,如果硬盘不够了,我们自己后期再添加容量就行:

範例
第四步设置CPU,按需设置吧,我这里设置的1核心:

範例
第五步设置内存和SWAP,按需设置即可:

範例
第六步设置网络,请注意这是最关键的一步,千万别设置错了:

範例
注:
1、在网络设置这块,首先我们选择桥接到vmbr0网卡。
2、IPv4/CIDR填写192.168.0.2/32,虽然这个CIDR限制没什么卵用,但Proxmox内的填写格式就是这样。。。
3、网关填:192.168.0.1
第七步设置DNS,我这里设置为谷歌的8.8.8.8:

範例
最后一步确认你的配置,无误后点击完成即可:

範例
现在就可以找到我们刚创建的小鸡了,点击启动,启动完成后我们可以使用JS版本的Console控制台来访问小鸡:

範例
登录进去更新下系统,顺带测试下机器有没有网:

範例
下个文件试试:

範例
very nice,非常棒,机器是可以访问外网的,一切看上去都是那么的正常~
可是现在有个问题,机器现在我们是能访问到外网了,但外网怎么访问我们呢?这时候就需要在母鸡上做端口映射了。
直接在母鸡上执行:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 23333 -j DNAT --to-destination 192.168.0.2:22

这条命令的意思是把母鸡端口23333,转发到IP为192.168.0.2的小鸡端口22上。那么这样做了之后,我们访问母鸡的公网IP+23333端口就相当于访问了这台小鸡的22端口。
同理,如果需要其他的端口,比如搭建SS啊之类的,就把小鸡的SS端口做一下映射即可。
但现在又有一个问题,你会发现一旦你把母鸡重启了,小鸡开机后外网又访问不到了。这是因为Debian的iptables不存储任何规则,机器重启后就清除所有之前的规则。所以,这里我们可以借助一个小软件,先apt安装它:

apt-get install iptables-persistent

会提示你是否保存现有的规则到文件,直接选择YES:

範例
如果以后我们新增加了规则就可以用如下命令进行保存:

netfilter-persistent save

这样不管母鸡怎么重启,开机后系统还是会自动应用我们之前保存的规则。
存储的规则文件路径如下:

/etc/iptables/rules.v4

可以看到我们之前的规则都保存在这里:

範例
OK,现在你会发现又出来一个问题,为什么我按你上面说的这样做了后,小鸡还是不能通过外网访问?如果你在小鸡内安装的系统是CentOS7的话,那么这是Proxmox精简后的模版,默认几乎是什么软件都没有安装的,就连SSH服务都没有安装,对,你没有看错,就是这么任性。所以,没有SSH服务,你连不上也很正常。并不是我们的配置哪里有错误。
所以接下来的这些设置都于母鸡无关了,这些设置都是在小鸡内完成的。
首先我们还是通过Proxmox后台的JS控制台访问小鸡并安装SSH服务:

yum -y install openssh-server

编辑SSH配置文件:

vi /etc/ssh/sshd_config

允许SSH通过22端口连接,去掉前面的#号即可:

範例
允许使用root用户登录:

範例
保存配置文件,然后启动SSH服务:

systemctl start sshd.service

至此,大功告成,现在我们使用Xshell通过母鸡的23333端口就能连接到小鸡内了:

範例
写在最后:
不知道是母鸡的硬盘太辣鸡了还是哪里配置有问题,在小鸡内跑测评脚本测试IO的时候基本上一测试就断开连接,测试了好多次脚本就一次跑成功了,我也是很醉的,估计是硬盘不行。跑别的脚本或程序目前没发现什么问题。
关于Proxmox开KVM机器的网络设置,我估计直接用这套桥接的方案应该也是可行的,但是ProxmoxKVM那个控制台里面没有JS版本,只有一个noVNC,我实在是用不来noVNC,索性就懒得折腾了。。。

運維技術 lala.im
Theme Jasmine by Kent Liao