Чтобы ответить на заданный вопрос (, так как на него больше нигде нет ответа)
"How do I expose environment variables passed to /sbin/init to applications started by it?"
требуется немного раздражающий bash и чрезвычайно полезная функция файловой системы linux /proc:
# Import our environment variables from systemd
for e in $(tr "\000" "\n" < /proc/1/environ); do
eval "export $e"
done
Это читается как /proc/1/envion, что является средой, присвоенной PID 1, но ограниченной нулями. Он использует 'tr' для замены нулей новыми строками, а затем выполняет итерацию по этим строкам и оценивает их с добавленным перед ними "экспортом", чтобы они были видны дочерним процессам.
Отсутствие -открытых -переменных окружения -является еще одной «особенностью» systemd, и они не считают это ошибкой.
Вы можете использовать A в качестве шлюза. Включите IP-переадресацию на машине A и настройте для нее исходящий трафик NAT.
Краткий обзор:
Настройте адреса интерфейсов, соединяющих A и B на (обоих хостах ). Проверьте, отправив эхо-запрос между обоими хостами, используя эти адреса.
Включить маршрутизацию:
sysctl net.ipv4.ip_forward=1
(также проверьте, нет ли ограничивающих правил в цепочке FORWARD
таблицы filter
)
Добавить правила NAT на хосте A (при условии, что eth0
подключен к Интернету):
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Настройте DNS на хосте B.