В настоящее время у меня есть несколько машин M0
, ..., Mn
, соединенных коммутатором. Кроме того, одна назначенная управляющая машина M0
имеет дополнительный сетевой адаптер, который подключен к внешней сети (и Интернету). Это выглядит так:
+----+ +----+ +----+ +----+
outside ------------| M0 | | M1 | | M2 | | Mn |
network +----+ +----+ +----+ +----+
| | | |
| | | |
\ /========\ /
\-----| switch |-----/
\========/
У меня есть рабочая связь между машинами в их собственной внутренней сети, и я также могу получить доступ к внешней сети с машины M0
, я могу подключиться к другим машинам SSH из M0
.
Теперь я пытаюсь также установить рабочее интернет-соединение для других машин M1
, ..., Mn
. Мне не нужен этот постоянный, предпочтительно временный коммутатор, чтобы я мог обновлять или устанавливать что-то на других компьютерах, когда это необходимо.
Моя проблема в том, что всякий раз, когда я настраиваю переадресацию IP, мое SSH-соединение от M0
(где я работаю) к другим машинам прерывается. Поэтому мне нужно было бы перенаправить весь трафик через M0
, но разрешить SSH-соединения между M0
и любым Mn
.
Мой текущий подход заключается в том, что всякий раз, когда требуется Интернет, я устанавливаю M0
в качестве шлюза по умолчанию на этой конкретной машине и обновляю /etc/resolv.conf
.
На M0
активируются следующие правила iptables:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 192.168.2.0/24 anywhere
ACCEPT all -- anywhere 192.168.2.0/24
# NAT table
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.2.0/24 anywhere
Можно ли пересылать все, кроме поддержки SSH, только с iptables? Когда я пытаюсь отклонить соединения SSH перед тем, как принять переадресацию, они получаются - ну, отклоняются, а не обрабатываются на машине.
Все машины Ubuntu 16.04.3.
Спасибо за любые идеи!