Scramble obfuscate in openvpn

Now, I use Raspberry Pi 4 Model B and install OpenWrt 22.03.3. openvpn-openssl 2.5.7-3

I use strongVPN and i'd like to use scramble obfuscate password option in openvpn. Does anyone know how to install openvpn xor patch or ipk to install?

I am looking into it and just compiled the patch in for myself but have yet to test.

Do you still need it?

I just compiled with the patches compiled in and it works, a DDWRT client (which also has the scramble option) can connect to my OpenWRT OpenVPN server which now also has the scramble option.

You should be able to also use this for an OpenVPN client and connect scrambled to VPN providers which support the scramble option e.g. StrongVPN, TorGuard, IPvanish etc. to circumvent firewalling.

Note the scramble option is not compatible with DCO.
So when we switch to OpenVPN 2.6.x (which has DCO) you should add to the make file:
--disable-dco

If someone is interested please drop me a line :slight_smile:

Hello . Thanks for the answer. Please tell me where you can download and check how your assembly works?

Will do shortly, going away for the remainder of the day

Still doing some tidying up but here you go:

Great work on the patch

Can you point me towards a guide for compiling this patch in to Openvpn. I'm struggling to find a guide out there that is clear. I'm running a gl.inet router flashed with OpenWRT 23.05

Openwrt has really good instructions to compile from source.
I use Ubuntu 22.04 LTS and build for my R7800, EA8500 and Dynalink DL-WRX36.

See the openwry wikis:

https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem.

Thanks for the info. When I compile openwrt if I have your patch in the location described does that then get compiled into the openvpn package?

Yes exactly, the patches are executed automatically by the build process.

Great I’ll give it a go!

Progressing well, Can you tell me for the build to I just select the first 3 options in the makeconfig?

Kind Regards

Followed these step arfter building the system on a Ubunto docker image

Download and update the sources

git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
git pull

Select a specific code revision

git branch -a
git tag
git checkout v21.02.3

Update the feeds

./scripts/feeds update -a
./scripts/feeds install -a

Configure the firmware image and the kernel

make menuconfig
make -j$(nproc) kernel_menuconfig

Build the firmware image

make -j$(nproc) defconfig download clean world

I'm getting an error during ./scripts/feeds install -a

make -s -C scripts/config mconf: build failed. Please re-run make with -j1 V=s or V=sc for a higher verbosity level to see what's going on
make: *** [/openwrt/include/toplevel.mk:107: scripts/config/mconf] Error 1

I can still go on to menuconfig and pick the top 3 options. However make -j$(nproc) kernel_menuconfig will finish in error

make -r toolchain/install: build failed. Please re-run make with -j1 V=s or V=sc for a higher verbosity level to see what's going on
make: *** [/openwrt/include/toplevel.mk:232: toolchain/install] Error 1

All sorted my VM storage was too small and was running out of space when compiling. Had a heart attack when I found Luci wasnt loading. Then realised it wasn’t compiled by default.

Just re compiling to include openvpn for the patches and mini DLNA as the compiled bin is a slightly different kernel to mini DLNA that’s downloadable through the software store.

Thanks for all your help

I am not a compiling expert but after:
git pull
I do
./scripts/feeds update -a && ./scripts/feeds install -a
I noticed that that sometimes gives an error and then I run it a second time that normally does not give an error any more.

After the make menuconfig (I use a diffconfig from earlier builds) I compile in three steps:

make -j $(($(nproc)+1)) download #(-j sets number of CPU's)
make -j $(($(nproc)+1)) toolchain/install #(compile tools and toolchain and then install)
make V=s 2>&1 | tee build.log | grep -i -E "^make.*(error|[12345]...Entering dir)"

Not sure if this is the optimal thing, it certainly is not the fastest but it works for me (I use a VM with only 4 cores available).