szegmentációs hiba

még 2018-ban is, amikor a modern, funkciókban gazdag azonnali üzenetküldő alkalmazások, például a Gitter vagy a rendkívül népszerű Slack, ugyanolyan elterjedtek, mint valaha, az IRC továbbra is sok fejlesztő számára az előnyben részesített kommunikációs módszer. Egyszerű, stabil, mindenütt jelen van, és ami a legfontosabb, teljesen decentralizált. Ez egy régi protokoll, mivel az IRC a kilencvenes évek eleje óta rúg (az IRC protokoll RFC 1993-ban jelent meg). Mint ilyen, az IRC-nek megvannak a maga korlátai.

az egyik legjelentősebb számomra az Üzenetarchívum hiánya. Az IRC klienstől küldött és az általa fogadott összes üzenet nem kerül tárolásra a gépen, és nem kap visszajátszást a korábbi beszélgetésekről egy olyan csatornán, amelyhez éppen csatlakozott. Minden alkalommal, amikor bejelentkezik egy IRC csevegőszobába, tiszta lapot kap. Ez kényelmetlen, mivel az IRC-t nagyon gyakran használják sávon kívüli kommunikációs csatornaként. Csatlakozol egy csatornához, hagysz egy kérdést, majd várj néhány órát, amíg valaki válaszol, mivel az emberek nem hajlamosak olyan gyakran figyelni az IRC-t, mint más azonnali üzenetküldő alkalmazásokkal.

szerencsére és talán nem meglepő módon ez már jó ideje megoldott probléma. A leggyorsabb és legegyszerűbb módszer egy állandó kapcsolat létrehozása az IRC szerverrel egy 24/7-es vezérlésű szerverről, és egy SSH/tmux munkamenet létrehozása vele minden alkalommal, amikor vissza akarunk térni az IRC-re. Ha végeztünk, csak válassza le a munkamenetet C-a d – vel a GNU képernyőn vagy C-b d – vel a tmux-on. Ez megoldja azt a problémát, hogy hiányzik az összes csatornán küldött üzenet, amíg távol voltunk, de ez minden, amit kapsz. Ha olyan megoldást keres, amely ennél sokkal többet kínál, itt az ideje, hogy vessen egy pillantást a kidobókra.

mi az a kidobószerver?

a bouncer szerver olyan szerver, amelyet proxyként használunk az IRC eléréséhez. A kidobó átveszi az IRC adatainkat, és kapcsolatot létesít egy IRC szerverrel a nevünkben, sőt csatlakozik az előre meghatározott csatornák listájához.

ezután az IRC Kliens helyett közvetlenül az IRC szerverre csatlakozunk ehhez a bouncer szerverhez, és ettől kezdve az üzeneteinket a bouncer “visszapattan” a célszerverre.

a kidobók számos előnyt kínálnak, többek között:

  • állandó szerver és csatorna munkamenetek
  • csatornabeszélgetések naplózása egy szöveges fájlba archiválás céljából
  • Bouncer felhasználói hitelesítés
  • automatikus IRC szerver hitelesítés NickServ vagy SASL segítségével
  • automatizálja az IRC felhasználói állapotokat (hagyjon & távoli üzeneteket stb.)
  • és még sok más!

a bouncer szerver beállítása az AWS-en

saját Bouncer szervert fogunk létrehozni a znc, a legnépszerűbb bouncer szerver alkalmazás segítségével egy olcsó AWS EC2 példányon.

indítson el egy új Ubuntu Server 16.04 t2.nano EC2 példányt az összes alapértelmezett beállítással, kivéve a következőket:

  • felhasználói adatok: telepítse a bouncer szoftvert (ZNC), hozzon létre egy felhasználót a folyamathoz és egy könyvtárat a fájlok tárolásához, valamint egy systemd egységfájlt az indításkor történő indításhoz.
#!/bin/bashapt-get update && apt-get dist-upgrade -y && \apt-get install -y znc znc-dev znc-perl znc-python znc-tcl && \useradd -M -s /bin/false znc && usermod -L znc && \mkdir /opt/znc && \cat > /etc/systemd/system/znc.service <<- EOFDescription=ZNC IRC BouncerExecStart=/usr/bin/znc -d /opt/zncExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=alwaysType=forkingUser=zncWantedBy=multi-user.targetAlias=znc.serviceEOF

mivel a systemd unit fájl közvetlenül a /etc/systemd/system fájlba került, az indításkor automatikusan fut. Nem kell engedélyezni.

  • alhálózat: győződjön meg arról, hogy a példány nyilvános alhálózatban van elindítva, amelyhez internetes átjáró van csatlakoztatva, így könnyen elérhető az internetről.
  • EBS kötet: a Znc (Bouncer) jelszó, az IRC szerver jelszó és az IRC beszélgetési naplók egyszerű szöveges fájlokban lesznek tárolva, ezért erősen ajánlom a kötet titkosítását.
  • hozzon létre egy új biztonsági csoportot, hogy csatolja hozzá, így a következő portok nyitva vannak:
    • SSH: így konfigurálhatjuk a példányt
    • 7078 TCP port (bármely fenntartás nélküli port megteszi, valójában): Znc listening port
  • állítsa be a” név ” címkéjét valami értelmesre, ha szeretné

most hozzon létre egy új rugalmas IP-címet, és társítsa azt a példányhoz.

a ZNC

SSH telepítése az újonnan létrehozott EC2 példányba, és futtassa a ZNC első telepítési folyamatát, amely arra kér minket, hogy állítsunk be egy figyelő portot a bouncer számára, és hozzunk létre egy adminisztrátori fiókot. Válassza ki az alábbi lehetőségeket.

$ znc --makeconf Checking for list of available modules... -- Global settings -- Listen on port (1025 to 65534): 7078 Listen using SSL (yes/no) : yes Verifying the listener... Unable to locate pem file: , creating it Writing Pem file ... Enabled global modules -- Admin user settings -- Username (alphanumeric): admin Enter password: Confirm password: Nick : Alternate nick : Ident : Real name (optional): Bind host (optional): Enabled user modules Set up a network? (yes/no) : no Writing config ... To connect to this ZNC you need to connect to it as your IRC server using the port that you supplied. You have to supply your login info as the IRC server password like this: user/network:pass. Try something like this in your IRC client... /server <znc_server_ip> +7078 admin:<pass> To manage settings, users and networks, point your web browser to https://<znc_server_ip>:7078/ Launch ZNC now? (yes/no) : no

Ez létrehoz egy konfigurációs fájlt, amelyet a felhasználó saját könyvtárában tárolunk (ubuntu, ha az alapértelmezett Amazon által biztosított Ubuntu Server AMI-t használja). Tegyük át az újonnan létrehozott konfigurációs fájlokat ebből a könyvtárból a /opt/znc könyvtárba, és adjuk meg a znc felhasználói tulajdonosi jogokat.

$ sudo mv ~/.znc/* /opt/znc$ rmdir ~/.znc$ sudo chown -R znc:znc /opt/znc

most elindíthatja a ZNC-t

$ sudo systemctl start znc

győződjön meg arról, hogy a ZNC sikeresen elindult

$ systemctl status znc● znc.service - ZNC IRC Bouncer Loaded: loaded (/etc/systemd/system/znc.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2018-07-29 13:02:07 UTC; 21min ago Process: 1181 ExecStart=/usr/bin/znc -d /opt/znc (code=exited, status=0/SUCCESS) Main PID: 1245 (znc) Tasks: 1 Memory: 10.8M CPU: 54ms CGroup: /system.slice/znc.service └─1245 /usr/bin/znc -d /opt/znc

a ZNC konfigurálása

az első konfigurációs szakasz befejeződött. Most hozzá kell adnunk azt a felhasználót, akit bejelentkezünk, valamint egy IRC-hálózatot, amelyet társítani kell az adott felhasználóhoz.

a fennmaradó beállítások alkalmazásához a bouncer-hez csatlakozunk annak webkonfigurációs frontendjéhez, amely elérhető azon a porton, amelyen konfiguráltuk a hallgatást (az én esetemben a 7078-as port). Tehát a böngészőjében írja be a következő URL-t: https://<bouncer_ip_address>:7078. Ha “hiányzó HTTPS tanúsítvány” hibát vagy hasonlót kap, biztonságosan figyelmen kívül hagyhatja ezt, és utasíthatja böngészőjét a folytatásra. Most jelentkezzen be a korábban létrehozott rendszergazdai felhasználóként a megadott jelszó használatával.

ZNC web frontend

miután bejelentkezett, kattintson a “globális beállítások” menüpontra a jobb oldalon, hogy megnézze a bouncer általános konfigurációját.

a ZNC modulok (Megosztott objektumok) gyűjteményét telepíti a /usr/lib/znc fájlba, amelyeket a démon futása közben tölthet be vagy tölthet le. Ha lefelé görget az aljára, megjelenik a kidobó működését befolyásoló globális modulok listája, amelyet engedélyezhet/letilthat a “Név” oszlopban lévő jelölőnégyzetek váltásával. Az én esetemben a” napló ” engedélyezve van, mivel azt akarom, hogy a kidobóm szöveges fájlban tárolja az összes olyan üzenetet, amelyet a csatornákon küldök, amelyeknek tagja vagyok.

Znc globális modulok

kattintson a “Felhasználók kezelése” gombra a jobb oldali menüben a felhasználói konfigurációs panel megjelenítéséhez. Most kattintson a” Hozzáadás ” gombra egy új felhasználó hozzáadásához, és töltse ki a részleteket: felhasználónév, jelszó (vegye figyelembe, hogy ezt a jelszót csak a znc-vel való hitelesítéshez használja, az IRC-kiszolgálóval nem fogja használni), IRC-részletek és azon modulok listája, amelyeket kifejezetten ehhez a felhasználóhoz szeretne betölteni.

ZNC felhasználói adatok

Ezután kattintson az alján található “mentés és folytatás” gombra, hogy hozzáadhassunk egy IRC hálózatot ehhez a felhasználóhoz.

Hálózat hozzáadása egy felhasználóhoz

töltse ki annak az IRC-hálózatnak az adatait, amelyhez a felhasználó társítva lesz, és opcionálisan engedélyezze azokat a modulokat, amelyeket automatikusan be szeretne tölteni, amikor csatlakozik ehhez a hálózathoz. Az egyik ilyen modul lehet sasl, ha ezzel a módszerrel szeretné hitelesíteni az IRC-kiszolgálót. Engedélyezni fogom ezt a modult ezen a hálózaton.

az “IRC-hálózat kiszolgálói” szövegmezőbe beírja annak az IRC-kiszolgálónak az adatait, amelyhez csatlakozni szeretne

<server> <port> <irc_password>

pluszjelet csatoljon a porthoz az SSL-kapcsolat jelöléséhez. <irc_password> az a jelszó, amelyet az IRC szerverre történő regisztrációhoz használt a /NickServ paranccsal, amely teljesen elkülönül attól a jelszótól, amelyet a fenti bouncer hitelesítésére állított be.

például ahhoz, hogy SSL-en keresztül csatlakozzon a Freenode IRC hálózathoz egy korábban regisztrált fiókkal, ennek a szövegmezőnek a tartalma a következő lenne

irc.freenode.net +6697 myNickServPassword123

ellenkező esetben egyszerűen lehet

irc.freenode.net 6667

az IRC hálózat beállítása

észre fogod venni, hogy az IRC jelszavad egyszerű szövegben van tárolva a kiszolgálón. Ezért javasoltam a VPS beállítási lépései során az EBS kötet titkosítását, és természetesen nagyon szigorúan ellenőrizni kell, hogy ki férhet hozzá a bouncer szerverhez. Ajánlott a VPS biztonsági csoport lezárása, hogy csak az IP-k nagyon kis részhalmazából érkező kapcsolatokat engedélyezze.

kattintson ismét a “Mentés és folytatás” gombra. Most opcionálisan hozzáadhat egy listát azokról a csatornákról, amelyekbe be akarja jelentkezni a kidobó, de emlékezni fog azokra is, amelyekhez csatlakozik, amikor csatlakozik hozzá.

most már van egy AWS VPS (virtuális magánszerver), amely a ZNC teljesen működőképes telepítését tárolja. Az utolsó dolog az, hogy az IRC ügyfelünket a kidobóra irányítjuk.

Csatlakozás a kidobóhoz

az irssi-t fogom használni a kidobóhoz való csatlakozáshoz. Itt vannak a lépések, amelyeket követtem, hogy működjön. A futásteljesítmény eltérő lehet egy másik kliensen, például a HexChat vagy a mIRC, de maguknak a részleteknek többnyire változatlanoknak kell maradniuk.

indítsa el az irssi-t, megadva a kidobóhoz való csatlakozáshoz használt becenevet

$ irssi -n <username>

hozzon létre egy új, freenodebnc nevű hálózatot,és adja hozzá a kidobó adatait. Mivel SSL-en keresztül csatlakozom a Freenode IRC szerverhez, a biztonságos kapcsolatokhoz a 6697-es portot használom, és a -ssl jelzőt adom át. username/freenode az a felhasználónév és hálózati kombináció, amelyet a znc felhasználói konfigurációs panelen hoztunk létre. password az a jelszó, amelyet a znc-vel történő hitelesítéshez használunk, nem pedig az IRC-kiszolgálóhoz.

/network add freenodebnc/server add -net freenodebnc -auto -ssl <bouncer_ip> 6697 username/freenode:password

futtassa a következő parancsokat a módosítások irssi konfigurációs fájlba mentéséhez, majd csatlakozzon a kidobóhoz.

/save/connect freenodebnc

ha betöltötte a SASL modult (a /msg *status ListModules futtatásával ellenőrizheti, hogy be van-e töltve), akkor ezen a ponton be kell állítania. Tehát, miután csatlakozott a kidobóhoz, futtassa a következő parancsokat az IRC kliensen.

/query *saslmechanism external plainset <NickServName> <password>

ahol NickServName az Ön regisztrált felhasználóneve az IRC szerveren, és password a jelszó, amelyet a fent említett szerver hitelesítéséhez használ.

most csatlakoztassa újra az IRC hálózatot az újrakonfigurált SASL modullal.

/msg *status jump

eltarthat néhány pillanatig, amíg a kidobó létrehozza a kapcsolatot (különösen, ha SSL-en keresztül csatlakozik, és olyan hitelesítési mechanizmusokat használ, mint a SASL), de ezt követően állandó, biztonságos munkamenetet kap az IRC szerverrel, amelyet bármikor szüneteltethet és folytathat. Boldog csevegést!