写在前面
本文会记录lxd安装后,如何配置虚拟机可以执行ssh,以及执行nat转发。
执行NAT转发
我们假设当前虚拟机在102.107这个IP上,然后我们需要虚拟化出十个IP,这十个IP是102.170到102.179,那么可以采用如下的方法进行配置。
1. 配置netplan,把宿主机设置成这样,相当于预分配上述的ip:
root@lcode:~# cat /etc/netplan/50-cloud-init.yaml network:renderer: networkdethernets:enp6s0:addresses:- 192.168.102.107/24- 192.168.102.170/24- 192.168.102.171/24- 192.168.102.172/24- 192.168.102.173/24- 192.168.102.174/24- 192.168.102.175/24- 192.168.102.176/24- 192.168.102.177/24- 192.168.102.178/24- 192.168.102.179/24nameservers:addresses:- 202.96.128.86- 114.114.114.114routes:- to: defaultvia: 192.168.102.254version: 2
2. 然后,设置NAT转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
3. 随后,安装路由表永久化的插件,随后保存上述的基础配置(我们假设虚拟机的ip是10.165.169.0/24的情况下)
apt-get install iptables-persistent -y iptables -A FORWARD -d 10.175.169.0/24 -j ACCEPT iptables -A FORWARD -s 10.175.169.0/24 -j ACCEPT netfilter-persistent save
4. 对于每一台机器,我们可以进行如下的设置,既可完成一台设备的映射了:
iptables -t nat -A PREROUTING -d 192.168.102.12x -j DNAT --to-destination 10.175.169.xxx iptables -t nat -A POSTROUTING -d 10.175.169.xxx -j MASQUERADE netfilter-persistent save
如果需要删除掉一组映射,那么就把-A换成-D既可。
关于lxd虚拟机远程ssh的一些trick
lxd虚拟机有一些恶心的地方,就是其不能用一般的方法执行ssh,需要先允许其用root登录。
sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config systemctl restart sshd
随后,你还需要设置/etc/ssh/sshd_config.d/60-cloudimg-settings.conf 将里面的no改成yes。
(此处详见)(99+ 封私信 / 81 条消息) 记 LXD 容器无法被ssh的问题 - 知乎
