Как заставить VPN App-to-App работать на MAC OSX? - PullRequest
2 голосов
/ 28 мая 2019

Я пытаюсь узнать больше о NEAppProxyProvider, так как я пытаюсь разработать Mac OSX для приложения vpn.

Что было достигнуто, так это то, что прокси приложения мог быть запущен, и с помощью SafariDomains установка потока из Safari могла быть захвачена handleNewFlow в AppProxyProvider.Теперь я пытаюсь захватить какой-то другой поток из указанных приложений с установленным в профиле com.apple.vpn.managed.appmapping.Но после установки профиля в профилях отображается только одна настройка.Я гуглил, пытаясь найти пример или шаблон профиля, но не получил ничего полезного.Пожалуйста, помогите мне проверить следующий профиль, чтобы увидеть, есть ли в нем проблемы.

Вот профиль, который включает в себя два слова в массиве.Первый dict работает с потоком Safari.Второй dict для vpn для каждого приложения, но, кажется, не может быть установлен правильно и не работает.Часть SafariDomains была удалена с тех пор, как я узнал на форумах разработчиков Apple, что SafariDomains не может работать с сопоставлением приложений вместе.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PayloadContent</key>
    <array>
        <dict>
            <key>IPv4</key>
            <dict>
                <key>OverridePrimary</key>
                <integer>0</integer>
            </dict>
            <key>PayloadDescription</key>
            <string>Configures VPN settings</string>
            <key>PayloadDisplayName</key>
            <string>VPN</string>
            <key>PayloadIdentifier</key>
            <string>com.apple.vpn.managed.applayer.330FBB83-639F-4F9E-9FA1-4FAC93E18B68</string>
            <key>PayloadType</key>
            <string>com.apple.vpn.managed.applayer</string>
            <key>PayloadUUID</key>
            <string>330FBB83-639F-4F9E-9FA1-4FAC93E18B68</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
            <key>Proxies</key>
            <dict>
                <key>HTTPEnable</key>
                <integer>0</integer>
                <key>HTTPSEnable</key>
                <integer>0</integer>
            </dict>
            <key>UserDefinedName</key>
            <string>appmapping</string>
            <key>VPN</key>
            <dict>
                <key>AuthName</key>
                <string>somebody</string>
                <key>AuthPassword</key>
                <string>opendoor</string>
                <key>AuthenticationMethod</key>
                <string>Password</string>
                <key>ProviderBundleIdentifier</key>
                <string>com.blob.macappproxy.macappproxy</string>
                <key>ProviderType</key>
                <string>app-proxy</string>
                <key>RemoteAddress</key>
                <string>127.0.0.1</string>
            </dict>
            <key>VPNSubType</key>
            <string>com.blob.macappproxy</string>
            <key>VPNType</key>
            <string>VPN</string>
            <key>OnDemandMatchAppEnabled</key>
            <integer>1</integer>
            <key>VendorConfig</key>
            <dict/>
            <key>VPNUUID</key>
            <string>3D7A07D8-97D0-4E5A-BB04-1EB82DD12A35</string>
        </dict>
        <dict>
            <key>PayloadDescription</key>
            <string>Configures Per APP VPN mapping</string>
            <key>PayloadDisplayName</key>
            <string>Per APP VPN mapping</string>
            <key>PayloadIdentifier</key>
            <string>com.apple.vpn.managed.appmapping.A88E1A77-2CC2-4BF9-879C-97C3DF491EB2</string>
            <key>PayloadType</key>
            <string>com.apple.vpn.managed.appmapping</string>
            <key>PayloadUUID</key>
            <string>A88E1A77-2CC2-4BF9-879C-97C3DF491EB2</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
            <key>UserDefinedName</key>
            <string>perappvpn</string>
            <key>AppLayerVPNMapping</key>
            <array>
                <dict>
                    <key>Identifier</key>
                    <string>com.google.Chrome</string>
                    <key>VPNUUID</key>
                    <string>3D7A07D8-97D0-4E5A-BB04-1EB82DD12A35</string>
                    <key>DesignatedRequirement</key>
                    <string>(identifier &quot;com.google.Chrome&quot; or identifier &quot;com.google.Chrome.beta&quot; or identifier &quot;com.google.Chrome.dev&quot; or identifier &quot;com.google.Chrome.canary&quot;) and certificate leaf = H&quot;c9a99324ca3fcb23dbcc36bd5fd4f9753305130a&quot;</string>
                    <key>SigningIdentifier</key>
                    <string>com.google.Chrome</string>
                </dict>
            </array>
        </dict>
    </array>
    <key>PayloadDisplayName</key>
    <string>some app proxy</string>
    <key>PayloadIdentifier</key>
    <string>blob-MacBook-Pro.A953E629-CD95-45B4-A42D-ECA2BA870A79</string>
    <key>PayloadRemovalDisallowed</key>
    <false/>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>1AEA709E-46D3-4293-B1E3-23EB8DD5B361</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
</dict>
</plist>

Как его следует изменить, чтобы позволить сетевому потоку указанного приложения быть захваченным в методе handleNewFlow appproxyprovider?Или может кто-нибудь, пожалуйста, вставьте работоспособный профиль?

...