Skip to content

Latest commit

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

openconnect + microsocks

This Docker image contains an openconnect client (version 8.10 with pulse/juniper support) and the microsocks proxy for socks5 connections (default on port 8889) in a very small alpine linux image (around 20 MB).

You can find the image on docker hub: https://hub.docker.com/r/cbwang/openconnect-proxy

Requirements

If you don't want to set the environment variables on the command line set the environment variables in a .env file:

OPENCONNECT_URL=<Gateway URL>
OPENCONNECT_USER=<Username>
OPENCONNECT_PASSWORD=<Password>
OPENCONNECT_OPTIONS=--authgroup <VPN Group> \
--servercert <VPN Server Certificate> --protocol=<Protocol> \
--reconnect-timeout 86400

Don't use quotes around the values!

See the openconnect documentation for available options.

Either set the password in the .env file or leave the variable OPENCONNECT_PASSWORD unset, so you get prompted when starting up the container.

Optionally set a multi factor authentication code:

OPENCONNECT_MFA_CODE=<Multi factor authentication code>

Run container in foreground

To start the container in foreground run:

docker run -it --rm --privileged --env-file=.env \
-p 8889:8889 cbwang/openconnect-proxy:latest

The proxies are listening on ports 8889 (socks). Either use --net host or -p <local port>:8889 to make the proxy ports available on the host.

Without using a .env file set the environment variables on the command line with the docker run option -e:

docker run … -e OPENCONNECT_URL=vpn.gateway.com/example \
-e OPENCONNECT_OPTIONS='<Openconnect Options>' \
-e OPENCONNECT_USER=<Username> …

Run container in background

To start the container in daemon mode (background) set the -d option:

docker run -d -it --rm …

In daemon mode you can view the stderr log with docker logs:

docker logs `docker ps|grep "cbwang/openconnect-proxy"|awk -F' ' '{print $1}'`

Use container with docker-compose

vpn:
container_name: openconnect_vpn
image: cbwang/openconnect-proxy:latest
privileged: true
env_file:
- .env
ports:
- 8889:8889
cap_add:
- NET_ADMIN
networks:
- mynetwork

Set the environment variables for openconnect in the .env file again (or specify another file) and map the configured ports in the container to your local ports if you want to access the VPN on the host too when running your containers. Otherwise only the docker containers in the same network have access to the proxy ports.

Route traffic through VPN container

Let's say you have a vpn container defined as above, then add network_mode option to your other containers:

depends_on:
- vpn
network_mode: "service:vpn"

Keep in mind that networks, extra_hosts, etc. and network_mode are mutually exclusive!

Configure proxy

The container is connected via openconnect and now you can configure your browser and other software to use one of the proxies (8889 for socks).

ssh through the proxy

You need nc (netcat), corkscrew or something similar to make this work.

Unfortunately some git clients (e.g. Gitkraken) don't use the settings from ssh config and you can't pull/push from a repository that's reachable (DNS resolution) only through VPN.

nc (netcat, ncat)

Set a ProxyCommand in your ~/.ssh/config file like

Host <hostname>
ProxyCommand nc -x 127.0.0.1:8889 %h %p

or (depending on your ncat version)

Host <hostname>
ProxyCommand ncat --proxy 127.0.0.1:8889 --proxy-type socks5 %h %p

and your connection will be passed through the proxy. The above example is for using git with ssh keys.

Build

You can build the container yourself with

docker build -f build/Dockerfile -t cbwang/openconnect-proxy:custom ./build

About

docker openconnect proxy

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - cbwang2016/openconnect-proxy: docker openconnect proxy · GitHub
Skip to content

Latest commit

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

openconnect + microsocks

This Docker image contains an openconnect client (version 8.10 with pulse/juniper support) and the microsocks proxy for socks5 connections (default on port 8889) in a very small alpine linux image (around 20 MB).

You can find the image on docker hub: https://hub.docker.com/r/cbwang/openconnect-proxy

Requirements

If you don't want to set the environment variables on the command line set the environment variables in a .env file:

OPENCONNECT_URL=<Gateway URL>
OPENCONNECT_USER=<Username>
OPENCONNECT_PASSWORD=<Password>
OPENCONNECT_OPTIONS=--authgroup <VPN Group> \
--servercert <VPN Server Certificate> --protocol=<Protocol> \
--reconnect-timeout 86400

Don't use quotes around the values!

See the openconnect documentation for available options.

Either set the password in the .env file or leave the variable OPENCONNECT_PASSWORD unset, so you get prompted when starting up the container.

Optionally set a multi factor authentication code:

OPENCONNECT_MFA_CODE=<Multi factor authentication code>

Run container in foreground

To start the container in foreground run:

docker run -it --rm --privileged --env-file=.env \
-p 8889:8889 cbwang/openconnect-proxy:latest

The proxies are listening on ports 8889 (socks). Either use --net host or -p <local port>:8889 to make the proxy ports available on the host.

Without using a .env file set the environment variables on the command line with the docker run option -e:

docker run … -e OPENCONNECT_URL=vpn.gateway.com/example \
-e OPENCONNECT_OPTIONS='<Openconnect Options>' \
-e OPENCONNECT_USER=<Username> …

Run container in background

To start the container in daemon mode (background) set the -d option:

docker run -d -it --rm …

In daemon mode you can view the stderr log with docker logs:

docker logs `docker ps|grep "cbwang/openconnect-proxy"|awk -F' ' '{print $1}'`

Use container with docker-compose

vpn:
container_name: openconnect_vpn
image: cbwang/openconnect-proxy:latest
privileged: true
env_file:
- .env
ports:
- 8889:8889
cap_add:
- NET_ADMIN
networks:
- mynetwork

Set the environment variables for openconnect in the .env file again (or specify another file) and map the configured ports in the container to your local ports if you want to access the VPN on the host too when running your containers. Otherwise only the docker containers in the same network have access to the proxy ports.

Route traffic through VPN container

Let's say you have a vpn container defined as above, then add network_mode option to your other containers:

depends_on:
- vpn
network_mode: "service:vpn"

Keep in mind that networks, extra_hosts, etc. and network_mode are mutually exclusive!

Configure proxy

The container is connected via openconnect and now you can configure your browser and other software to use one of the proxies (8889 for socks).

ssh through the proxy

You need nc (netcat), corkscrew or something similar to make this work.

Unfortunately some git clients (e.g. Gitkraken) don't use the settings from ssh config and you can't pull/push from a repository that's reachable (DNS resolution) only through VPN.

nc (netcat, ncat)

Set a ProxyCommand in your ~/.ssh/config file like

Host <hostname>
ProxyCommand nc -x 127.0.0.1:8889 %h %p

or (depending on your ncat version)

Host <hostname>
ProxyCommand ncat --proxy 127.0.0.1:8889 --proxy-type socks5 %h %p

and your connection will be passed through the proxy. The above example is for using git with ssh keys.

Build

You can build the container yourself with

docker build -f build/Dockerfile -t cbwang/openconnect-proxy:custom ./build

About

docker openconnect proxy

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - cbwang2016/openconnect-proxy: docker openconnect proxy · GitHub
Skip to content

Latest commit

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

openconnect + microsocks

This Docker image contains an openconnect client (version 8.10 with pulse/juniper support) and the microsocks proxy for socks5 connections (default on port 8889) in a very small alpine linux image (around 20 MB).

You can find the image on docker hub: https://hub.docker.com/r/cbwang/openconnect-proxy

Requirements

If you don't want to set the environment variables on the command line set the environment variables in a .env file:

OPENCONNECT_URL=<Gateway URL>
OPENCONNECT_USER=<Username>
OPENCONNECT_PASSWORD=<Password>
OPENCONNECT_OPTIONS=--authgroup <VPN Group> \
--servercert <VPN Server Certificate> --protocol=<Protocol> \
--reconnect-timeout 86400

Don't use quotes around the values!

See the openconnect documentation for available options.

Either set the password in the .env file or leave the variable OPENCONNECT_PASSWORD unset, so you get prompted when starting up the container.

Optionally set a multi factor authentication code:

OPENCONNECT_MFA_CODE=<Multi factor authentication code>

Run container in foreground

To start the container in foreground run:

docker run -it --rm --privileged --env-file=.env \
-p 8889:8889 cbwang/openconnect-proxy:latest

The proxies are listening on ports 8889 (socks). Either use --net host or -p <local port>:8889 to make the proxy ports available on the host.

Without using a .env file set the environment variables on the command line with the docker run option -e:

docker run … -e OPENCONNECT_URL=vpn.gateway.com/example \
-e OPENCONNECT_OPTIONS='<Openconnect Options>' \
-e OPENCONNECT_USER=<Username> …

Run container in background

To start the container in daemon mode (background) set the -d option:

docker run -d -it --rm …

In daemon mode you can view the stderr log with docker logs:

docker logs `docker ps|grep "cbwang/openconnect-proxy"|awk -F' ' '{print $1}'`

Use container with docker-compose

vpn:
container_name: openconnect_vpn
image: cbwang/openconnect-proxy:latest
privileged: true
env_file:
- .env
ports:
- 8889:8889
cap_add:
- NET_ADMIN
networks:
- mynetwork

Set the environment variables for openconnect in the .env file again (or specify another file) and map the configured ports in the container to your local ports if you want to access the VPN on the host too when running your containers. Otherwise only the docker containers in the same network have access to the proxy ports.

Route traffic through VPN container

Let's say you have a vpn container defined as above, then add network_mode option to your other containers:

depends_on:
- vpn
network_mode: "service:vpn"

Keep in mind that networks, extra_hosts, etc. and network_mode are mutually exclusive!

Configure proxy

The container is connected via openconnect and now you can configure your browser and other software to use one of the proxies (8889 for socks).

ssh through the proxy

You need nc (netcat), corkscrew or something similar to make this work.

Unfortunately some git clients (e.g. Gitkraken) don't use the settings from ssh config and you can't pull/push from a repository that's reachable (DNS resolution) only through VPN.

nc (netcat, ncat)

Set a ProxyCommand in your ~/.ssh/config file like

Host <hostname>
ProxyCommand nc -x 127.0.0.1:8889 %h %p

or (depending on your ncat version)

Host <hostname>
ProxyCommand ncat --proxy 127.0.0.1:8889 --proxy-type socks5 %h %p

and your connection will be passed through the proxy. The above example is for using git with ssh keys.

Build

You can build the container yourself with

docker build -f build/Dockerfile -t cbwang/openconnect-proxy:custom ./build

About

docker openconnect proxy

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - cbwang2016/openconnect-proxy: docker openconnect proxy · GitHub
Skip to content

Latest commit

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

openconnect + microsocks

This Docker image contains an openconnect client (version 8.10 with pulse/juniper support) and the microsocks proxy for socks5 connections (default on port 8889) in a very small alpine linux image (around 20 MB).

You can find the image on docker hub: https://hub.docker.com/r/cbwang/openconnect-proxy

Requirements

If you don't want to set the environment variables on the command line set the environment variables in a .env file:

OPENCONNECT_URL=<Gateway URL>
OPENCONNECT_USER=<Username>
OPENCONNECT_PASSWORD=<Password>
OPENCONNECT_OPTIONS=--authgroup <VPN Group> \
--servercert <VPN Server Certificate> --protocol=<Protocol> \
--reconnect-timeout 86400

Don't use quotes around the values!

See the openconnect documentation for available options.

Either set the password in the .env file or leave the variable OPENCONNECT_PASSWORD unset, so you get prompted when starting up the container.

Optionally set a multi factor authentication code:

OPENCONNECT_MFA_CODE=<Multi factor authentication code>

Run container in foreground

To start the container in foreground run:

docker run -it --rm --privileged --env-file=.env \
-p 8889:8889 cbwang/openconnect-proxy:latest

The proxies are listening on ports 8889 (socks). Either use --net host or -p <local port>:8889 to make the proxy ports available on the host.

Without using a .env file set the environment variables on the command line with the docker run option -e:

docker run … -e OPENCONNECT_URL=vpn.gateway.com/example \
-e OPENCONNECT_OPTIONS='<Openconnect Options>' \
-e OPENCONNECT_USER=<Username> …

Run container in background

To start the container in daemon mode (background) set the -d option:

docker run -d -it --rm …

In daemon mode you can view the stderr log with docker logs:

docker logs `docker ps|grep "cbwang/openconnect-proxy"|awk -F' ' '{print $1}'`

Use container with docker-compose

vpn:
container_name: openconnect_vpn
image: cbwang/openconnect-proxy:latest
privileged: true
env_file:
- .env
ports:
- 8889:8889
cap_add:
- NET_ADMIN
networks:
- mynetwork

Set the environment variables for openconnect in the .env file again (or specify another file) and map the configured ports in the container to your local ports if you want to access the VPN on the host too when running your containers. Otherwise only the docker containers in the same network have access to the proxy ports.

Route traffic through VPN container

Let's say you have a vpn container defined as above, then add network_mode option to your other containers:

depends_on:
- vpn
network_mode: "service:vpn"

Keep in mind that networks, extra_hosts, etc. and network_mode are mutually exclusive!

Configure proxy

The container is connected via openconnect and now you can configure your browser and other software to use one of the proxies (8889 for socks).

ssh through the proxy

You need nc (netcat), corkscrew or something similar to make this work.

Unfortunately some git clients (e.g. Gitkraken) don't use the settings from ssh config and you can't pull/push from a repository that's reachable (DNS resolution) only through VPN.

nc (netcat, ncat)

Set a ProxyCommand in your ~/.ssh/config file like

Host <hostname>
ProxyCommand nc -x 127.0.0.1:8889 %h %p

or (depending on your ncat version)

Host <hostname>
ProxyCommand ncat --proxy 127.0.0.1:8889 --proxy-type socks5 %h %p

and your connection will be passed through the proxy. The above example is for using git with ssh keys.

Build

You can build the container yourself with

docker build -f build/Dockerfile -t cbwang/openconnect-proxy:custom ./build

About

docker openconnect proxy

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - cbwang2016/openconnect-proxy: docker openconnect proxy · GitHub
Skip to content

Latest commit

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

openconnect + microsocks

This Docker image contains an openconnect client (version 8.10 with pulse/juniper support) and the microsocks proxy for socks5 connections (default on port 8889) in a very small alpine linux image (around 20 MB).

You can find the image on docker hub: https://hub.docker.com/r/cbwang/openconnect-proxy

Requirements

If you don't want to set the environment variables on the command line set the environment variables in a .env file:

OPENCONNECT_URL=<Gateway URL>
OPENCONNECT_USER=<Username>
OPENCONNECT_PASSWORD=<Password>
OPENCONNECT_OPTIONS=--authgroup <VPN Group> \
--servercert <VPN Server Certificate> --protocol=<Protocol> \
--reconnect-timeout 86400

Don't use quotes around the values!

See the openconnect documentation for available options.

Either set the password in the .env file or leave the variable OPENCONNECT_PASSWORD unset, so you get prompted when starting up the container.

Optionally set a multi factor authentication code:

OPENCONNECT_MFA_CODE=<Multi factor authentication code>

Run container in foreground

To start the container in foreground run:

docker run -it --rm --privileged --env-file=.env \
-p 8889:8889 cbwang/openconnect-proxy:latest

The proxies are listening on ports 8889 (socks). Either use --net host or -p <local port>:8889 to make the proxy ports available on the host.

Without using a .env file set the environment variables on the command line with the docker run option -e:

docker run … -e OPENCONNECT_URL=vpn.gateway.com/example \
-e OPENCONNECT_OPTIONS='<Openconnect Options>' \
-e OPENCONNECT_USER=<Username> …

Run container in background

To start the container in daemon mode (background) set the -d option:

docker run -d -it --rm …

In daemon mode you can view the stderr log with docker logs:

docker logs `docker ps|grep "cbwang/openconnect-proxy"|awk -F' ' '{print $1}'`

Use container with docker-compose

vpn:
container_name: openconnect_vpn
image: cbwang/openconnect-proxy:latest
privileged: true
env_file:
- .env
ports:
- 8889:8889
cap_add:
- NET_ADMIN
networks:
- mynetwork

Set the environment variables for openconnect in the .env file again (or specify another file) and map the configured ports in the container to your local ports if you want to access the VPN on the host too when running your containers. Otherwise only the docker containers in the same network have access to the proxy ports.

Route traffic through VPN container

Let's say you have a vpn container defined as above, then add network_mode option to your other containers:

depends_on:
- vpn
network_mode: "service:vpn"

Keep in mind that networks, extra_hosts, etc. and network_mode are mutually exclusive!

Configure proxy

The container is connected via openconnect and now you can configure your browser and other software to use one of the proxies (8889 for socks).

ssh through the proxy

You need nc (netcat), corkscrew or something similar to make this work.

Unfortunately some git clients (e.g. Gitkraken) don't use the settings from ssh config and you can't pull/push from a repository that's reachable (DNS resolution) only through VPN.

nc (netcat, ncat)

Set a ProxyCommand in your ~/.ssh/config file like

Host <hostname>
ProxyCommand nc -x 127.0.0.1:8889 %h %p

or (depending on your ncat version)

Host <hostname>
ProxyCommand ncat --proxy 127.0.0.1:8889 --proxy-type socks5 %h %p

and your connection will be passed through the proxy. The above example is for using git with ssh keys.

Build

You can build the container yourself with

docker build -f build/Dockerfile -t cbwang/openconnect-proxy:custom ./build

About

docker openconnect proxy

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - cbwang2016/openconnect-proxy: docker openconnect proxy · GitHub
Skip to content

Latest commit

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

openconnect + microsocks

This Docker image contains an openconnect client (version 8.10 with pulse/juniper support) and the microsocks proxy for socks5 connections (default on port 8889) in a very small alpine linux image (around 20 MB).

You can find the image on docker hub: https://hub.docker.com/r/cbwang/openconnect-proxy

Requirements

If you don't want to set the environment variables on the command line set the environment variables in a .env file:

OPENCONNECT_URL=<Gateway URL>
OPENCONNECT_USER=<Username>
OPENCONNECT_PASSWORD=<Password>
OPENCONNECT_OPTIONS=--authgroup <VPN Group> \
--servercert <VPN Server Certificate> --protocol=<Protocol> \
--reconnect-timeout 86400

Don't use quotes around the values!

See the openconnect documentation for available options.

Either set the password in the .env file or leave the variable OPENCONNECT_PASSWORD unset, so you get prompted when starting up the container.

Optionally set a multi factor authentication code:

OPENCONNECT_MFA_CODE=<Multi factor authentication code>

Run container in foreground

To start the container in foreground run:

docker run -it --rm --privileged --env-file=.env \
-p 8889:8889 cbwang/openconnect-proxy:latest

The proxies are listening on ports 8889 (socks). Either use --net host or -p <local port>:8889 to make the proxy ports available on the host.

Without using a .env file set the environment variables on the command line with the docker run option -e:

docker run … -e OPENCONNECT_URL=vpn.gateway.com/example \
-e OPENCONNECT_OPTIONS='<Openconnect Options>' \
-e OPENCONNECT_USER=<Username> …

Run container in background

To start the container in daemon mode (background) set the -d option:

docker run -d -it --rm …

In daemon mode you can view the stderr log with docker logs:

docker logs `docker ps|grep "cbwang/openconnect-proxy"|awk -F' ' '{print $1}'`

Use container with docker-compose

vpn:
container_name: openconnect_vpn
image: cbwang/openconnect-proxy:latest
privileged: true
env_file:
- .env
ports:
- 8889:8889
cap_add:
- NET_ADMIN
networks:
- mynetwork

Set the environment variables for openconnect in the .env file again (or specify another file) and map the configured ports in the container to your local ports if you want to access the VPN on the host too when running your containers. Otherwise only the docker containers in the same network have access to the proxy ports.

Route traffic through VPN container

Let's say you have a vpn container defined as above, then add network_mode option to your other containers:

depends_on:
- vpn
network_mode: "service:vpn"

Keep in mind that networks, extra_hosts, etc. and network_mode are mutually exclusive!

Configure proxy

The container is connected via openconnect and now you can configure your browser and other software to use one of the proxies (8889 for socks).

ssh through the proxy

You need nc (netcat), corkscrew or something similar to make this work.

Unfortunately some git clients (e.g. Gitkraken) don't use the settings from ssh config and you can't pull/push from a repository that's reachable (DNS resolution) only through VPN.

nc (netcat, ncat)

Set a ProxyCommand in your ~/.ssh/config file like

Host <hostname>
ProxyCommand nc -x 127.0.0.1:8889 %h %p

or (depending on your ncat version)

Host <hostname>
ProxyCommand ncat --proxy 127.0.0.1:8889 --proxy-type socks5 %h %p

and your connection will be passed through the proxy. The above example is for using git with ssh keys.

Build

You can build the container yourself with

docker build -f build/Dockerfile -t cbwang/openconnect-proxy:custom ./build

About

docker openconnect proxy

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - cbwang2016/openconnect-proxy: docker openconnect proxy · GitHub
Skip to content

Latest commit

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

openconnect + microsocks

This Docker image contains an openconnect client (version 8.10 with pulse/juniper support) and the microsocks proxy for socks5 connections (default on port 8889) in a very small alpine linux image (around 20 MB).

You can find the image on docker hub: https://hub.docker.com/r/cbwang/openconnect-proxy

Requirements

If you don't want to set the environment variables on the command line set the environment variables in a .env file:

OPENCONNECT_URL=<Gateway URL>
OPENCONNECT_USER=<Username>
OPENCONNECT_PASSWORD=<Password>
OPENCONNECT_OPTIONS=--authgroup <VPN Group> \
--servercert <VPN Server Certificate> --protocol=<Protocol> \
--reconnect-timeout 86400

Don't use quotes around the values!

See the openconnect documentation for available options.

Either set the password in the .env file or leave the variable OPENCONNECT_PASSWORD unset, so you get prompted when starting up the container.

Optionally set a multi factor authentication code:

OPENCONNECT_MFA_CODE=<Multi factor authentication code>

Run container in foreground

To start the container in foreground run:

docker run -it --rm --privileged --env-file=.env \
-p 8889:8889 cbwang/openconnect-proxy:latest

The proxies are listening on ports 8889 (socks). Either use --net host or -p <local port>:8889 to make the proxy ports available on the host.

Without using a .env file set the environment variables on the command line with the docker run option -e:

docker run … -e OPENCONNECT_URL=vpn.gateway.com/example \
-e OPENCONNECT_OPTIONS='<Openconnect Options>' \
-e OPENCONNECT_USER=<Username> …

Run container in background

To start the container in daemon mode (background) set the -d option:

docker run -d -it --rm …

In daemon mode you can view the stderr log with docker logs:

docker logs `docker ps|grep "cbwang/openconnect-proxy"|awk -F' ' '{print $1}'`

Use container with docker-compose

vpn:
container_name: openconnect_vpn
image: cbwang/openconnect-proxy:latest
privileged: true
env_file:
- .env
ports:
- 8889:8889
cap_add:
- NET_ADMIN
networks:
- mynetwork

Set the environment variables for openconnect in the .env file again (or specify another file) and map the configured ports in the container to your local ports if you want to access the VPN on the host too when running your containers. Otherwise only the docker containers in the same network have access to the proxy ports.

Route traffic through VPN container

Let's say you have a vpn container defined as above, then add network_mode option to your other containers:

depends_on:
- vpn
network_mode: "service:vpn"

Keep in mind that networks, extra_hosts, etc. and network_mode are mutually exclusive!

Configure proxy

The container is connected via openconnect and now you can configure your browser and other software to use one of the proxies (8889 for socks).

ssh through the proxy

You need nc (netcat), corkscrew or something similar to make this work.

Unfortunately some git clients (e.g. Gitkraken) don't use the settings from ssh config and you can't pull/push from a repository that's reachable (DNS resolution) only through VPN.

nc (netcat, ncat)

Set a ProxyCommand in your ~/.ssh/config file like

Host <hostname>
ProxyCommand nc -x 127.0.0.1:8889 %h %p

or (depending on your ncat version)

Host <hostname>
ProxyCommand ncat --proxy 127.0.0.1:8889 --proxy-type socks5 %h %p

and your connection will be passed through the proxy. The above example is for using git with ssh keys.

Build

You can build the container yourself with

docker build -f build/Dockerfile -t cbwang/openconnect-proxy:custom ./build

About

docker openconnect proxy

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - cbwang2016/openconnect-proxy: docker openconnect proxy · GitHub
Skip to content

Latest commit

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

openconnect + microsocks

This Docker image contains an openconnect client (version 8.10 with pulse/juniper support) and the microsocks proxy for socks5 connections (default on port 8889) in a very small alpine linux image (around 20 MB).

You can find the image on docker hub: https://hub.docker.com/r/cbwang/openconnect-proxy

Requirements

If you don't want to set the environment variables on the command line set the environment variables in a .env file:

OPENCONNECT_URL=<Gateway URL>
OPENCONNECT_USER=<Username>
OPENCONNECT_PASSWORD=<Password>
OPENCONNECT_OPTIONS=--authgroup <VPN Group> \
--servercert <VPN Server Certificate> --protocol=<Protocol> \
--reconnect-timeout 86400

Don't use quotes around the values!

See the openconnect documentation for available options.

Either set the password in the .env file or leave the variable OPENCONNECT_PASSWORD unset, so you get prompted when starting up the container.

Optionally set a multi factor authentication code:

OPENCONNECT_MFA_CODE=<Multi factor authentication code>

Run container in foreground

To start the container in foreground run:

docker run -it --rm --privileged --env-file=.env \
-p 8889:8889 cbwang/openconnect-proxy:latest

The proxies are listening on ports 8889 (socks). Either use --net host or -p <local port>:8889 to make the proxy ports available on the host.

Without using a .env file set the environment variables on the command line with the docker run option -e:

docker run … -e OPENCONNECT_URL=vpn.gateway.com/example \
-e OPENCONNECT_OPTIONS='<Openconnect Options>' \
-e OPENCONNECT_USER=<Username> …

Run container in background

To start the container in daemon mode (background) set the -d option:

docker run -d -it --rm …

In daemon mode you can view the stderr log with docker logs:

docker logs `docker ps|grep "cbwang/openconnect-proxy"|awk -F' ' '{print $1}'`

Use container with docker-compose

vpn:
container_name: openconnect_vpn
image: cbwang/openconnect-proxy:latest
privileged: true
env_file:
- .env
ports:
- 8889:8889
cap_add:
- NET_ADMIN
networks:
- mynetwork

Set the environment variables for openconnect in the .env file again (or specify another file) and map the configured ports in the container to your local ports if you want to access the VPN on the host too when running your containers. Otherwise only the docker containers in the same network have access to the proxy ports.

Route traffic through VPN container

Let's say you have a vpn container defined as above, then add network_mode option to your other containers:

depends_on:
- vpn
network_mode: "service:vpn"

Keep in mind that networks, extra_hosts, etc. and network_mode are mutually exclusive!

Configure proxy

The container is connected via openconnect and now you can configure your browser and other software to use one of the proxies (8889 for socks).

ssh through the proxy

You need nc (netcat), corkscrew or something similar to make this work.

Unfortunately some git clients (e.g. Gitkraken) don't use the settings from ssh config and you can't pull/push from a repository that's reachable (DNS resolution) only through VPN.

nc (netcat, ncat)

Set a ProxyCommand in your ~/.ssh/config file like

Host <hostname>
ProxyCommand nc -x 127.0.0.1:8889 %h %p

or (depending on your ncat version)

Host <hostname>
ProxyCommand ncat --proxy 127.0.0.1:8889 --proxy-type socks5 %h %p

and your connection will be passed through the proxy. The above example is for using git with ssh keys.

Build

You can build the container yourself with

docker build -f build/Dockerfile -t cbwang/openconnect-proxy:custom ./build

About

docker openconnect proxy

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages