środa, 18 kwietnia 2012

Xorg i Openbox w Jailu na FreeBSD

Założenia:
System FreeBSD 8.2 RELEASE
Jeden interfejs sieciowy, jeden publiczny adres IP
Natowanie i przekierowanie portów dla Jaili wykonane za pomocą PF
(Wystarczy funkcjonalność PF, którą zapewnia jądro GENERIC)
Zainstalowany, skonfigurowany Jail np. za pomocą sysutils/ezjail.
Edycja pliku /etc/hosts w Jailu (brak tego wpisu spowoduje błędy podczas startu serwera VNC)

192.168.1.3 host.domena.pl host

Instalacja softu w Jailu:
Korzystam z paczek przeznaczonych dla wersji 8-STABLE zatem w pliku /root/.cshrc

setenv ftp://ftp.ua.freebsd.org/pub/FreeBSD/ports/amd64/packages-8-stable/Latest/

i dalej po ponownym zalogowaniu:

# pkg_add -r xorg openbox vnc --> opcjonalnie icedtea-web mc nano opera

Pierwsze uruchomienie serwera:

$ vncserver

może i u mnie również kończy się błędem:
no free display on jailname
Edycji wymaga sekcja sub CheckDisplayNumber w pliku /usr/local/bin/vncserver
Stosowny fragment powinien wyglądać tak:

sub CheckDisplayNumber
{
local ($n) = @_;
socket(S, $AF_INET, $SOCK_STREAM, 0) || die "$prog: socket failed: $!\n";
eval 'setsockopt(S, &SOL_SOCKET, &SO_REUSEADDR, pack("l", 1))';
if (!bind(S, sockaddr_in(6000 + $n, &INADDR_ANY))) {
close(S);
return 0;
}
close(S);
socket(S, $AF_INET, $SOCK_STREAM, 0) || die "$prog: socket failed: $!\n";
eval 'setsockopt(S, &SOL_SOCKET, &SO_REUSEADDR, pack("l", 1))';
if (!bind(S, sockaddr_in(5900 + $n, &INADDR_ANY))) {
close(S);
return 0;
}
close(S);
..........

Kompletny plik można znaleźć tutaj.
Kolejna próba startu serwera:

$ vncserver

ustanowienie hasła, zatrzymanie serwera:

$ vncserver -kill :1

celem edycji powstałego w ~/.vnc pliku xstartup gdzie twm zmieniamy na openbox.
Start:

$ vncserver :1 -geometry 1280x1024 -depth 16


$ sockstat -4
zet120 Xvnc 31669 3 tcp4 192.168.1.3:5901 *:*
zet120 Xvnc 31669 4 tcp4 192.168.1.3:5801 *:*

Na porcie 5901 server VNC oczekuje na połączenia od klasycznego viewiera VNC, a na porcie 5801 oczekuje na połączenia od przeglądarki WEB (JAVA) i te porty, a przynalmniej jeden muszą być przekierowane do Jaila.