Openconnect을 향한 장대한 삽질

Gnome의 VPN 설정중 openconnect 에 인자로 –user-agent 를 넣어야 하는 일이 생겼다.

간단히 설정으로 될줄 알았는데 그게 아니였다. 해당 인자가 자주 사용되는 녀석이 아니기 때문에 그렇게 쓰고 있는 사용자도 드물고, 관련 설정 자료도 찾을수 없었다.

다만 gnome 에서 network 설정은 network manager 를 통해서 이루어 지고 gnome은 network manager를 controll 할수 있는 GUI를 제공 하고 있었다.

network manager의 VPN설정은 특이하게 /etc 아래가 아닌 /usr/lib에서 찾을수 있었다.(etc에 없어서 찾기 힘들었다.)

/usr/lib/NetworkManager/ 아래에 VPN 관련 설정을 찾을수 있었다

# cat VPN/nm-openconnect-service.name
[VPN Connection]
name=openconnect
service=org.freedesktop.NetworkManager.openconnect
program=/usr/libexec/nm-openconnect-service
supports-multiple-connections=true

[libnm]
plugin=libnm-vpn-plugin-openconnect.so

[GNOME]
auth-dialog=/usr/libexec/nm-openconnect-auth-dialog
properties=libnm-openconnect-properties

[openconnect]
supported-protocols=anyconnect,nc

해당 confing에서는 openconnect를 직접 호출하는게 아닌 /usr/libexec/nm-openconnect-service를 호출하고 있었는데 해당 file은 script 가 아닌 binary 였다. 따라서 직접 소스를 찾아야 했다. source는 rpm 에서 찾을수 있었다.(github에는 없는것 같다)

https://fedora.pkgs.org/27/fedora-x86_64/NetworkManager-openconnect-gnome-1.2.4-6.fc27.x86_64.rpm.html soruce package를 받아서 살펴보니 인자로 전달할 방법이 아예 전무 하고 전달하기 위해서는 반드시 binary 패치가 필요하다.

패치하고 build 하는것은 어렵지 않아 보이나 이 기능을 위해 시간을 더이상 쓸수는 없어 포기 하였다.

만약 패치할만한 여유가 되면 패치후 contribute 하는것도 고려해볼만하다. http://www.infradead.org/openconnect/contribute.html