OS X OpenVPN фильтрация пакетов

363
alex-phillips

В настоящее время у меня установлено соединение OpenVPN на моем Mac. По умолчанию весь мой сетевой трафик в настоящее время маршрутизируется через это соединение: http, ssh и т. Д. Я пытаюсь использовать конфигурации фильтрации пакетов, чтобы определенный трафик проходил через мое стандартное общедоступное соединение, но я не могу показаться чтобы заставить это работать. Возможно, я неправильно его настраиваю, но ниже приводится то, что у меня есть. Я не получаю сообщение об ошибке из pfctlмоей конфигурации, но если я curl http://ipecho.net/plain, он отображает IP-адрес VPN вместо моего общедоступного IP-адреса.

Примечание: мой publicинтерфейс представляет собой соединение Ethernet (en0), и, насколько я могу судить, utun0 - это мое соединение OpenVPN, указанное в ifconfig.

pass out on en0 proto tcp from en0 to any port 80 flags S/SA keep state

То же самое с SSH.

pass out on en0 proto tcp from en to any port 22 flags S/SA keep state

Я должен упомянуть, что я не управляю сервером OpenVPN.

0
Тот факт, что вы не управляете сервером OpenVPN, не имеет отношения к моему ответу: четыре добавляемые строки должны быть добавлены в файл ** client ** conf, ** не ** в файл conf сервера. MariusMatutiae 8 лет назад 0
О, мой плохой. Это даст при попытке. Спасибо! alex-phillips 8 лет назад 0

1 ответ на вопрос

0
MariusMatutiae

I presume that what you use OpenVPN for, then, is just to gain access to your home LAN. If this is indeed the case, there are several options to override the usual

 push "redirect-gateway def1" 

setting in the server.conf. You find them described on this OpenVPN Wiki page, the simplest one of them all is to add these four lines to your client config file:

 route 0.0.0.0 192.0.0.0 net_gateway route 64.0.0.0 192.0.0.0 net_gateway route 128.0.0.0 192.0.0.0 net_gateway route 192.0.0.0 192.0.0.0 net_gateway 

The Wiki states explicitly:

Note that net_gateway is an internal variable to openvpn and does not need to be changed to anything

and, even more reassuringly, says that these four lines will work ...

If you do not know if your server uses def1 and do not want to check the logs to figure it out, just assume they DO use def1 and use the 4 routes. That will work no matter what.

Извините, я должен был упомянуть, что это не сервер OpenVPN, которым я управляю. Если в конфигурации клиента нет способа определить, какой трафик направляется, но в моей конфигурации клиента не так много. alex-phillips 8 лет назад 0
Это сработало, я отмечу ответ как правильный. Но не могли бы вы дать мне какое-либо представление о том, как отправлять трафик или протокол определенного порта через VPN после изменения этой конфигурации? Будет ли это что-то для фильтрации пакетов? alex-phillips 8 лет назад 0
К сожалению, этого нельзя сделать в Unix. Это можно сделать только в Linux, благодаря двум функциональным возможностям (маршрутизация источника и пространства имен сети), которые не имеют аналогов в ядрах Unix и Windows. Фильтрация пакетов предназначена, например, для отправки всех пакетов, поступающих на определенный порт, по указанному адресу, а не для их ** маршрутизации ** через него. Лучшее, что вы можете сделать, - это настроить виртуальную машину, которую вы затем сможете (или нет) маршрутизировать через VPN. Затем вы можете оставить хост не маршрутизированным через OpenVPN, а гостя - через VPN (или наоборот) и запускать приложения в соответствии с потребностями маршрутизации. MariusMatutiae 8 лет назад 0