Извините за мой английский.
У меня 2 виртуальных машины VirtualBox. Один с Debian 8 а другой с Сервер Ubuntu 14.04 LTS. Оба настроены с мостовым сетевым адаптером. Обе машины имеют одинаковый MAC и IP-адрес (я никогда не использую их одновременно).
В обеих ВМ я установил Клиент CheckPoint VPN (snx). В обоих случаях я могу без проблем подключиться к удаленному серверу VPN. Когда я подключаюсь к удаленному серверу, появляется динамический сетевой интерфейс (Tunsnx). Адрес удаленной локальной сети: x.x.x.x / 24.
Для совместного использования VPN-соединения с компьютерами в моей локальной сети я активировал (на обеих виртуальных машинах) переадресацию IP (sysctl -w net.ipv4.ip_forward = 1) и я установил следующее правило iptables:
iptables -t nat -A POSTROUTING -s гг.г.г / 24 -o tunsnx -j МАСКАРАД
Также я добавил маршрут к сети x.x.x.x / 0 для всех компьютеров в моей локальной сети:
маршрут добавить маску x.x.x.x 255.255.255.0 г.г.г.21 (хосты Windows)
г.г.г.21 это IP-адрес виртуальной машины и г.г.г.г / 24 это мой адрес в локальной сети. Благодаря этому я могу подключиться к удаленному серверу через виртуальную машину с любого компьютера в моей локальной сети. Все нормально работает.
Я знаю, что все конфигурации, которые я здесь упомянул, исчезают, когда я перезагружаю машины. Не беспокойся об этом.
Теперь я обновил две свои ВМ: с Debian 8 к Debian 9 и из Ubuntu 14.04 LTS к Ubuntu 16.04 LTS и я повторил весь процесс: установил программу snx, активировал переадресацию IP и установил правила iptables. Я могу без проблем подключиться к удаленному серверу с обеих виртуальных машин, но не могу подключиться к удаленному серверу с любого другого компьютера в моей локальной сети.
Я сделал несколько тестов. Я установил другой сетевой адаптер в обе виртуальные машины и подключил их к другой виртуальной машине в частной сети (z.z.z.z / 24), и я вижу, что переадресация IP и правило iptables в порядке. Переадресация IP работает между г.г.г.г / 24 и z.z.z.z / 24 сети без проблем, но не работает между г.г.г.г / 24 и x.x.x.x / 24 сети.
Я искал в Google несколько дней и ничего полезного не нашел.
Что мне не хватает?
Заранее спасибо.
Вместо этого используйте исходный nat, потому что неправильный исходный IP-адрес попадает в туннель при маскараде: tun_ip = $ (ip a | grep tunsnx | grep inet | awk '{print $ 2;}')
iptables -t nat -A ПОСТРОУТИРОВАНИЕ -o tunsnx -s гг.г.г / 24 -j SNAT --to $ tun_ip