前言
在购买EX43之后,本想再单独购买/29的IPV4,便去hz的后台看了下ipv4的价格。额,月13欧还要加34欧的安装费,他家ip大概是金子做的吧。
囊中羞涩的我只能无限开NAT VPS了。好在,Hetzner还有/64的ipv6可用,这样就可以孵化NAT ipv4 VPS加独立ipv6 VPS了。
ipv4网络配置
ipv4其实配置起来很简单的,PVE官方文档也写了怎么配置NAT网络。原文链接:Network Configuration
原理就是新建一个虚拟网卡,搭建虚拟子网,然后通过iptables进行端口映射,实现虚拟机和外网互联。
也有使用brook进项端口映射的,这个看个人吧。
配置过程
hetzner的debian镜像默认是关闭转发的,编辑/etc/sysctl.conf,添加:
net.ipv4.ip_forward=1
hetzner的debian镜像里默认有,只不过加了注释,可以直接取消#注释
输入
sysctl -p
生效后,开启ipv4转发。
编辑/etc/network/interfaces,Hetzner的物理网卡配置不要动,只在下面添加新建虚拟网卡vmbr0,添加网桥:
auto vmbr0
#private sub network
iface vmbr0 inet static
address 10.0.0.1/24
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.0.0.0/24' -o eno1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o eno1 -j MASQUERADE
保存和重启后,PVE的网络中会出现一个网桥:
这样就可以给虚拟机下发ipv4了。
端口映射
配置完网桥后,要设置端口映射才能使外网连接上创建的虚拟机。iptables规则每次重启就会失效,所以最简单的方法就是直接把规则写在/etc/network/interfaces里。
比如:
把10.0.0.20:22映射到母鸡的60000端口
post-up iptables -t nat -I PREROUTING -p tcp -i eno1 --dport 60000 -j DNAT --to 10.0.0.20:22
post-down iptables -t nat -D PREROUTING -p tcp -i eno1 --dport 60000 -j DNAT --to 10.0.0.20:22
这样外网通过母鸡ip:60000端口就可以ssh连接到地址为10.0.0.20的虚拟机了。
不过iptables端口映射最大问题是,每次添加新的映射,必须重启母鸡才会生效,service networking restart 并不会生效。
如果母鸡的性能足够强,强烈建议pve里安装一台Windows虚拟机,然后开启远程桌面连接,这样其他Linux虚拟机22等常用的连接端口就不用映射了,Windows虚拟机远程就可以连接各个Linux虚拟机,因为他们是同一个内网。只需要管理好母鸡的3389端口安全就好。
ipv6 网络配置
ipv6网络配置起来就很麻烦了,站长鼓捣了好几天。
站长参考的教程:hostloc上的大佬写的帖子
配置过程
依旧编辑/etc/sysctl.conf,开启ipv6转发。
net.ipv6.conf.all.accept_dad = 1
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.accept_redirects = 1
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.all.forwarding=1
sysctl -p
编辑/etc/network/interfaces,在物理网卡(eno1)的ipv6配置里添加up ip -6 route del 2a01:4f8:fff:ffff::/64 dev eno1
iface eno1 inet6 static
address 2a01:4f8:fff:ffff::2/64
gateway fe80::1
up ip -6 route del 2a01:4f8:fff:ffff::/64 dev eno1 #这个是ipv6的网段
新建vmbr0虚拟网卡,给定一个ipv6
iface vmbr0 inet6 static
address 2a01:4f8:fff:ffff::3/64 #随便给个ipv6地址做网关
bridge_ports none
bridge_stp off
bridge_fd 0
post-up /sbin/ip -f inet6 neigh add proxy 2a01:4f8:fff:ffff::/64 dev vmbr0 #是让所有的ipv6流量走vmbr0,才能将ipv6流量转发出去
pre-down /sbin/ip -f inet6 neigh del proxy 2a01:4f8:fff:ffff::/64 dev vmbr0 #是让所有的ipv6流量走vmbr0,才能将ipv6流量转发出去
新建虚拟机时:
ip写2a01:4f8:fff:ffff::ff/64,网关:2a01:4f8:fff:ffff::3
文章版权归作者所有。发布者:白嫖怪,转转请注明出处:https://c7pai.com/1185/