Назад | Перейти на главную страницу

NAT с двумя восходящими интерфейсами?

Через несколько дней я буду работать над полевым оборудованием, состоящим из полдюжины устройств Centos, объединенных в сеть, но не подключенных к Интернету. Для работы (в частности, для применения обновлений) мне нужно будет временно подключить эти маленькие сети к Интернету.

Скорее всего, мое восходящее соединение будет через Wi-Fi-интерфейс моего ноутбука Fedora (а затем и далее через модем 4G). Общая идея состоит в том, чтобы выполнить NAT на моем ноутбуке, подключить его интерфейс Ethernet к полевой сети с подходящим локальным IP-адресом и временно установить его в качестве маршрута по умолчанию на полевых машинах.

Пока все хорошо, но возникает сложность из-за того, что некоторые обновления необходимо будет получать из сети нашей компании (через проприетарный клиент VPN на моем ноутбуке), а некоторые - из общедоступного Интернета. VPN-сервер не передает неофисный трафик в Интернет, ожидается, что клиенты будут маршрутизировать только «офисные» пакеты через VPN и отправлять Интернет-трафик напрямую.

Я не особо разбираюсь в маршрутизации, iptables и т. Д. Я взял эти фрагменты конфигурации, которые почти выполняют требуемый мне NAT:

iptables -A FORWARD -i $NAT_IF -j ACCEPT
iptables -A FORWARD -o $NAT_IF -j ACCEPT
iptables -t nat -A POSTROUTING -o $WAN_IF -j MASQUERADE

...где $NAT_IF порт Ethernet моего ноутбука (локальная сторона) и $WAN_IF это либо интерфейс Wi-Fi, либо ppp интерфейс, созданный клиентом VPN. Таким образом, я могу позволить клиентским машинам подключаться либо к Интернету, либо к офису компании, но не к обоим сразу. Это не очень удобно, когда dnf update команде может потребоваться извлечь как общедоступные RPM, так и некоторые проприетарные пакеты компании.

К сожалению, сейчас я не могу попробовать это, но, возможно, это так же просто, как дублировать последнюю строку выше, причем одна использует VPN как $ WAN_IF, а другая - интерфейс Wi-Fi. Однако я подозреваю, что нет, потому что он, похоже, ничего не делает, чтобы указать, какие пакеты должны идти вверх по интерфейсу ppp (что-либо для 10.0.0.0/8), а какие прямо к Wi-Fi (все остальное).

Что мне нужно сделать на моем ноутбуке (действующем как маршрутизатор), чтобы машины в локальной сети могли общаться как с офисом, так и с Интернетом, причем различие между ними очень предпочтительно проводить на ноутбуке, а не настраивать каждый клиент?

Спасибо за вашу помощь.

Чтобы различать маршрут движения, вам нужно добавить маршруты

ip route add 10.0.0.0/8 dev $VPN_IF

или

ip route add 10.0.0.0/8 via $TUNNEL_REMOTE_IP

Как его добавить, зависит от конфигурации вашего vpn.

Например: вы можете настроить дополнительные маршруты в графическом интерфейсе NetworkManager.


И, наверное, нужно замаскироваться под VPN так же, как и под WAN.

iptables -t nat -A POSTROUTING -o $VPN_IF -j MASQUERADE

Если VPN-сервер вашей компании ничего не знает о вашей подсети LAN.