На хостинге был арендован сервер под разработку. На него установлен XenServer 7.6 последней версии на данный момент + есть 2 выделенных IP-адреса – один под сам XenServer, а второй под виртуальную машину, которая будет служить шлюзом и прокси-сервером для виртуальных маших.
Схематично будет выглядеть так
gate eth0 – 91.203.23.13 – external IP
gate eth1 – 10.16.0.21
vm1 eth0 – 10.16.0.22
Для того, чтобы машина могла пересылать трафик, нужно сделать изменения в ядре и применить эти изменения на лету:
/etc/sysctl.conf.d/forward.conf:
net.ipv4.ip_forward=1
sysctl -p /etc/sysctl.conf.d/forward.conf
Осталось настроить фаервол для доступа к сети интернет с vm1. Для этого будет настроен штатный Firewalld. Он прост и удобен в настройке.
Так настраивается маскарадинг на внешнем интерфейсе eth0:
firewall-cmd --direct --permanent --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
А так правила форвардинга трафика между интерфейсами:
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i eth1 -o eth0 -j ACCEPT
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEP
Для работы DNS с vm1 необходимо разрешить 53 порт на gate:
firewall-cmd --permanent --zone=external --add-port=53/tcp
И осталось перезагрузить сервис:
systemctl restart firewall