1

неопытный сисадмин тут.

Я планирую запустить сетевой демон в тюрьме FreeBSD через OpenVPN, но хочу иметь возможность SSH напрямую в тюрьму и использовать демон веб-интерфейса демона, не проходя через VPN. Насколько я понимаю, туннель OpenVPN обычно настраивается как виртуальный интернет-интерфейс по умолчанию, и поэтому входящий трафик будет передаваться по интерфейсу OpenVPN по умолчанию (что проблематично, так как это приводит к задержке).

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

Существует ли элегантный способ гарантировать, что трафик, выходящий через определенные порты, выходит через указанный интерфейс по умолчанию с использованием ipfw?

1 ответ1

1

Если не используется что-то вроде Multipath TCP, соединения TCP никогда не изменят свой интерфейс. Если трафик поступает от удаленного хоста A в интерфейсе Y, ответы (в общем случае) уходят через интерфейс Y, даже если наилучший подходящий маршрут (к хосту A) может привести в другом месте. Если, конечно, этот интерфейс Y имеет маршрут, ведущий к хосту А.

OpenVPN в своей наиболее часто используемой конфигурации redirect-gateway def1 не переписывает маршруты. Вместо этого он использует способ сопоставления маршрутов: выбирается наиболее конкретный маршрут сопоставления. Как правило, у вас есть маршрут 0.0.0.0/0 (он же маршрут по умолчанию), указывающий на ваш интернет-шлюз (или любой другой). Этот маршрут соответствует всему. Обычно присутствуют и более конкретные маршруты, ведущие к вашей локальной сети. OpenVPN создает два новых маршрута: 0.0.0.0/1 и 128.0.0.0/1 . Опять же, эти маршруты соответствуют всем, но выбираются поверх предыдущего маршрута по умолчанию, потому что они более конкретны. Итог: интерфейс Y все еще может достигать «всего».

Как правило, VPN-соединение не препятствует входящему трафику на других интерфейсах. Таким образом, он должен работать без дополнительной настройки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .