Wpis z mikrobloga

Są jacyś eksperci od #linux #freebsd na wykopie? Mam sobie serwer stojący na FreeNAS 11.1 (na bazie FreeBSD 11.1 stable) i chcę w jailu sobie zainstalować OpenVPN+Transmission. Ogarnąłem, z grubsza działa tj. łączę się, ściągam, a jak ustawię poprawny port to nawet seeduję. Tu jest drobny niuans, tj. muszę od dostawcy VPN zażyczyć otwarcia portu - jest to proste żądanie curl, na które serwer dostawcy odpowiada mi numerem portu, który ja sobie potem ustawiam na kliencie torrent (wywołując odpowiedni program, który nim steruje, transmission-remote).
Ponieważ żądanie to trzeba wysłać po ustaleniu połączenia z VPN, ale nie później niż 2 minuty po tym, napisałem skrypt do automatyzacji całego procesu i podpiąłem go do pliku konfiguracyjnego usługi openvpn. I tu robią się schody: jak wywołuję ten skrypt ręcznie (przez SSH w jailu jako root), to wszystko bangla dokładnie tak jak chcę. A jak restartuję usługę i to jej proces wywołuje skrypt, to transmission-remote umiera przez segfault. Ktoś mi zasugerował na SO, że to problem z chrootem i niedopasowaniem bibliotek, ale szczerze mówiąc nie bardzo czaję jeszcze jak działają te jaile ;_; Jakieś pomysły? Albo linki do poczytania? Chętnie bym zrozumiał o co tu chodzi...
  • 11
@drag_op: Tzn. to jest tak: proces usługi openvpn (działający jako root) odpala ten skrypt i robi wywołanie transmission-remote. Sprawdzałem to: jak w skrypcie zrobię echo $(whoami) to powie, że root. No a gdyby to był problem z uprawnieniami, to chyba by się program nawet nie spróbował uruchomić, tylko dostałbym od systemu komunikat że permission denied czy coś takiego. Zamiast tego mam segmentation fault.
@drag_op: Tak, tylko ruch torrentów chcę słać przez VPN, reszta normalnie przez publiczne IP. A gdyby stały w osobnych jailach to nie mógłbym ich w ogóle skomunikować.
Próbowałem trochę drążyć temat bibliotek. ldd mówi, że transmission-remote wymaga tylko libc.so.7, więc zerknąłem sobie w /lib/. Okazuje się, że na głównym roocie systemu ten folder wygląda nieco inaczej niż w jailu - tj. lista plików jest ta sama, ale rozmiary (a
@drag_op: FreeNAS tworzy jaile automatycznie do pluginów. To znaczy: mógłbym manualnie tworzyć jaile i wszystko stawiać w nich ręcznie, ale pewna grupa najczęściej używanych programów (Plex, Sickbeard, Transmission i kilkanaście innych) są gotowe jako spakowane "pluginy". Plus tego jest taki, że instalacja przebiega jednym kliknięciem - wybierasz plugin, a system już sam tworzy jaila, instaluje w nim pakiet(y) i ustawia usługę. Minusem jest brak kontroli nad tworzeniem jaila, tj. nie wiesz
@drag_op: W ostateczności chyba będę musiał sięgnąć po takie rozwiązanie, ale wydaje się to trochę drastyczne. Jeśli połączę się z transmission przez zewnętrznego klienta to normalnie mogę manipulować ustawieniami itd. - wydaje się więc, że nawet jeśli mój obecny problem jest bezpośrednio nie do rozwiązania, to dałoby się zrobić jakieś obejście (nie wiem, może wysłać odpowiedni pakiet wprost po sieci, bezpośrednio do nasł#!$%@?ącego demona na przykład). Pytanie, na co będzie trzeba
@salad_fingers ja robiłem w ten sposób właśnie.
Miałem tam postawionego clienta openvpn i transmission-daemon który domyślnie jest zarządzalny przez przeglądarkę. Oczywiście przez zewnętrzne klienty też.
@drag_op: Pogrzebałem jeszcze trochę. Jeśli openvpn uruchamia mój skrypt, to robi się segfault. Ale jeśli robi to cron... wszystko jest git ( ͡° ͜ʖ ͡°)
Więc zrobiłem tak, że up script openvpna tylko zapisuje numer portu w pliku, a cron co minutę odpala skrypt, który sprawdza czy jest taki plik, a jeśli tak to ustawia numer portu na transmission-remote i go usuwa. Naokoło, ale działa jak należy