Для SSH
На B:
#Arbitrary port
SOME_PORT=2022
iptables -t nat -I PREROUTING -p tcp --dport $SOME_PORT -j DNAT --to-destination 192.168.0.2:22
iptables -I FORWARD -p tcp --dport 22 -d 192.168.0.2 -j ACCEPT
#On a machine type A:
ssh -p $SOME_PORT
Для Samba
Действительно ли возможно смонтировать, что доли C через nfs на B затем устанавливают самбу на B? В противном случае затем можно перенаправить порты самбы:
iptables -t nat -I PREROUTING -p tcp -m multiport –dports 139,445 -j DNAT --to-destination 192.168.0.2
iptables -t nat -I PREROUTING -p udp –dport 137:138 -j DNAT --to-destination 192.168.0.2
Если самба уже работает на B, то Вы могли связать дополнительный IP-адрес на B и передать C (Вы могли сделать это для ssh также для хранения порта 22. Опасайтесь сервисов, запускающихся на этих 0.0.0.0 адресах):
ifconfig eth0:1 192.168.109.16 netmask 255.255.255.0
iptables -t nat -I PREROUTING -d 192.168.15.109.16 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.2
iptables -t nat -I PREROUTING -d 192.168.15.109.16 -p tcp -m multiport –dports 139,445 -j DNAT --to-destination 192.168.0.2
iptables -t nat -I PREROUTING -d 192.168.15.109.16 -p udp –dport 137:138 -j DNAT --to-destination 192.168.0.2
РЕДАКТИРОВАНИЕ я вижу, что у Вас все еще есть проблемы; удостоверьтесь что:
Машина C имеет маршрут назад пользователю через машину B. В противном случае затем установите правило подмены о машине B:
iptables-t туземный-I POSTROUTING-d 192.168.0.2-p tcp - ПОДМЕНА dport 22-j
tcpdump может быть полезен для поиска и устранения неисправностей. На машине B:
#capture and display packets heading to 192.168.0.2
tcpdump -i any -p tcp ip host 192.168.0.2 and port 22
Я лично позволил бы серверу работать или переместить его в более удобную среду. Возможно, это не стоит автоматизировать.
Если вы должны завершить работу всего хоста, убедитесь, что на ваших виртуальных машинах установлены инструменты VMWare (чтобы обеспечить плавное завершение работы и включение питания) и что они установите значение остановить и запустить с хоста .
Вы можете использовать vCli и запланировать задание cron , чтобы перевести хост в режим обслуживания и / или полностью выключить хост. Я бы, вероятно, просто вручную запустил команду выключения хоста из клиента с графическим интерфейсом в конце дня.
vCli уже упоминался, и это лучший способ, по моему мнению.
Однако, похоже, вы столкнулись с более серьезной проблемой, например, с перегревом серверной. С этим нужно справляться на правильном уровне. Исправьте HVAC как можно скорее, иначе вы в конечном итоге повредите свое оборудование. Прочтите http: //www.openxtra .co.uk / article / skimp-server-room-ac
Вы можете включить его по локальной сети. Если у вас есть такая опция в BIOS ESXi (обычно опция Wake On LAN ). Таким образом, вы можете добавить расписание на другой машине, чтобы разбудить ESXi. И не забудьте настроить автоматический запуск виртуальных машин при запуске ESXi. Иногда в BIOS есть опция расписания включения машины.
Для энергосбережения можно использовать VMware Distributed Power Management (DPM).
Перед автоматическим выключением вы должны посмотреть настройки питания хоста и соответствующим образом отрегулировать их. См. https://www.vmware.com/files/pdf/techpaper/hpm-performance-vsphere55-white-paper.pdf циклическое переключение питания (а также термический цикл, как вы говорите) сократит срок службы сервер
Вы можете включить ssh-сервер на ESXi и скопировать свой ssh-ключ на сервер, прочтите следующее о том, как это сделать: Мониторинг RAID-контроллера LSI 3ware на ESXi
Затем, чтобы выключить виртуальные машины и выключить сервер ESXi. Я бы запланировал задание cron на удаленном физическом сервере:
20 9 12 22 * root ssh 10.1.1.140 /sbin/shutdown.sh
30 9 12 22 * root ssh 10.1.1.140 /sbin/poweroff
В этом случае выключите виртуальные машины 22 декабря в 9:20 утра и выключите сервер ESXi 22 декабря. , 9:30.
Файл /sbin/shutdown.sh - это сценарий, который аккуратно завершает работу виртуальных машин, и он поставляется с экземпляром ESXi. Команда poweroff - это просто "busybox poweroff".
Если у вас запущен python, вы можете использовать сценарий, который я написал ниже для пробуждения и выключения вашего сервера ESXi. У меня дома есть Dell R810, который я использую в качестве сервера Cisco VIRL и других устройств, но я включаю его только тогда, когда он мне нужен. Он внизу, поэтому я хотел, чтобы я мог запустить его и остановить наверху. Я включил Wake On Lan на основном сетевом адаптере на сервере (CTRL-S, когда он загружается, и включить его для основного сетевого адаптера). В vSphere настройте виртуальные машины на запуск и остановку вместе с сервером, поскольку этот сценарий отключит ваши виртуальные машины и отключит сервер. Включите ssh для вашего сервера ESXi, введите MAC-адрес основного сетевого адаптера и измените пароль root, IP-адрес сервера и путь к python ниже.
python esxi.py -w Разбудит сервер, отправив волшебный пакет WOL. python esxi.py -s отключит ваши виртуальные машины и отключит питание вашего сервера.
paramiko Wake On LAN argparse
####################Start Script
#!/home/mikepartain/scripts/esxi/bin/python
from wakeonlan import wol
import time, argparse, paramiko
parser = argparse.ArgumentParser()
parser.add_argument('-w', action='store_true', dest='wakeup')
parser.add_argument('-s', action='store_true', dest='shutdown')
args = parser.parse_args()
if args.wakeup:
print 'Waking up ESXI Server'
wol.send_magic_packet('f0.4d.a2.aa.aa.aa')
if args.shutdown:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.178.10', username='root', password='#PASSWORD#')
stdin, stdout, stderr = ssh.exec_command('powerOffVms && halt')
print 'Shutting down ESXi Server'
ssh.close()
####################END Script
Если это сработает для вас или у вас есть способ улучшить его, сообщите мне!
Майк Партейн