Segmentation Fault

jopa vuonna 2018, kun modernit, monipuoliset pikaviestinsovellukset, kuten Gitter tai erittäin suosittu Slack, ovat yhtä läpitunkevia kuin ennenkin, IRC on edelleen ensisijainen viestintämenetelmä monille kehittäjille. Se on yksinkertainen, vakaa, kaikkialla läsnä, ja mikä tärkeintä, täysin hajautettu. Se on kuitenkin vanha protokolla, sillä IRC on potkinut jo 90-luvun alusta lähtien (IRC-protokolla RFC julkaistiin vuonna 1993). Sinänsä IRC tulee rajoituksineen.

yksi merkittävimmistä minulle on viestiarkiston puute. Kaikkia IRC-asiakkaan lähettämiä ja vastaanottamia viestejä ei tallenneta koneeseesi, etkä saa uusinta aiemmista keskusteluista kanavalta, johon juuri liityit. Joka kerta, kun kirjaudut IRC: n chat-huoneeseen, sinulle annetaan puhtaalta pöydältä. Tämä on hankalaa, koska IRC: tä käytetään hyvin usein kaistan ulkopuolisena viestintäkanavana. Liityt kanavalle, jätät kysymyksen ja odotat sitten muutaman tunnin jonkun vastausta, sillä ihmisillä ei ole tapana seurata IRC: tä yhtä usein kuin muilla pikaviestisovelluksilla.

onneksi ja ehkä ei yllättänytkään, tämä on ollut jo jonkin aikaa ratkaistu ongelma. Nopein ja yksinkertaisin tapa on luoda pysyvä yhteys IRC-palvelimeen hallinnassamme olevalta palvelimelta, joka on 24/7 ja perustaa SSH/tmux-istunto sen kanssa joka kerta, kun haluamme tarkistaa IRC: n. Kun olemme valmiita, irrota istunto C-a d GNU: n näytöllä tai C-b d tmux: llä. Tämä ratkaisee ongelman puuttuu kaikki viestit lähetetään kanava, kun olimme poissa, mutta se on suurin piirtein kaikki mitä saat. Jos etsit ratkaisua, joka tarjoaa paljon enemmän kuin tämä, on aika vilkaista bouncers.

mikä on portsaripalvelin?

bouncer-palvelin on palvelin, jota käytämme välityspalvelimena IRC: n käyttöön. Portsari ottaa IRC-tietomme ja luo yhteyden IRC-palvelimeen puolestamme ja jopa liittyy ennalta määriteltyjen kanavien luetteloon.

tämän jälkeen muodostamme yhteyden tähän bouncer-palvelimeen IRC-asiakkaastamme suoraan IRC-palvelimen sijaan, Ja tästä eteenpäin bouncer ”bounced on” – viestimme siirtyy kohdepalvelimelle.

portsarit tarjoavat useita etuja, mm.:

  • pysyvät palvelin-ja kanavaistunnot
  • Kanavakeskustelujen kirjaaminen tekstitiedostoon arkistointia varten
  • Bouncer user authentication
  • Automaattinen IRC server authentication via NickServ or SASL
  • automatisoi IRC-käyttäjätilat (jätä & pois viestit jne.)
  • ja paljon muuta!

Bouncer-palvelimen perustaminen AWS

aiomme perustaa oman Bouncer-palvelimen käyttäen ZNC: tä, suosituinta bouncer-palvelinsovellusta, edullisessa AWS EC2-instanssissa.

Käynnistä Uusi Ubuntu Server 16.04 t2.nano EC2-instanssi, jossa on kaikki oletusasetukset lukuun ottamatta seuraavia:

  • käyttäjätiedot: asenna bouncer software (ZNC), Luo käyttäjä prosessille ja Hakemisto sille tallentaa sen tiedostoja ja systemd unit tiedosto käynnistää sen käynnistyksen.
#!/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

koska systemd unit-tiedosto on sijoitettu suoraan /etc/systemd/system, se suoritetaan automaattisesti käynnistyksen yhteydessä. Sitä ei tarvitse ottaa käyttöön.

  • aliverkko: varmista, että instanssi käynnistetään julkisessa aliverkossa, johon on liitetty Internet-yhdyskäytävä, joten se on helposti saatavilla Internetistä.
  • EBS volume: ZNC (Bouncer) – salasanasi, IRC-palvelimen salasana ja IRC-keskustelulokit tallennetaan tavallisiin tekstitiedostoihin, joten suosittelen salaamaan taltion.
  • Luo uusi tietoturvaryhmä, jotta seuraavat portit ovat auki:
    • SSH: näin voimme määrittää esiintymän
    • TCP-portti 7078 (mikä tahansa varaukseton portti kelpaa, itse asiassa): ZNC kuunteluportti
  • aseta sen” nimi ” – tagi johonkin merkitykselliseen, jos haluat

luo nyt uusi Elastinen IP-osoite ja liitä se instanssiin.

ZNC

SSH: n asentaminen vasta luotuun EC2-instanssiin ja ZNC: n ensimmäisen kerran määritysprosessi, joka pyytää meitä asettamaan kuunteluportin bouncerille ja luomaan admin-tilin. Valitse vaihtoehdot kuten alla.

$ 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

tämä luo asetustiedoston, joka tallennetaan kotihakemistoon käyttäjälle, jonka olemme ssh ’ d AS: ssä (ubuntu, jos käytät oletuksena Amazonin tarjoamaa Ubuntu Server AMI: tä). Siirretään uudet asetustiedostot tästä kansiosta /opt/znc ja annetaan znc käyttäjän omistajan oikeudet siihen.

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

nyt voit aloittaa ZNC

$ sudo systemctl start znc

varmista, että ZNC on käynnistynyt onnistuneesti

$ 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

konfigurointi ZNC

ensimmäinen konfigurointivaihe on valmis. Nyt meidän on lisättävä käyttäjä, jonka kirjaudumme sisään nimellä, ja IRC-verkko, joka liitetään kyseiseen käyttäjään.

soveltaaksemme jäljellä olevat asetukset bounceriin, yhdistämme sen web-kokoonpanon frontendiin, joka on saatavilla portilla, jonka määritimme kuuntelemaan (minun tapauksessani portti 7078). Kirjoita siis selaimeesi seuraava URL: https://<bouncer_ip_address>:7078. Jos saat ”puuttuvan HTTPS-varmenteen” virheen tai vastaavan, voit turvallisesti sivuuttaa tämän ja ohjeistaa selaimesi jatkamaan. Nyt Kirjaudu sisään järjestelmänvalvojana käyttäjänä, jonka olet luonut ennen, syöttämälläsi salasanalla.

ZNC web frontend

kun kirjaudut sisään, voit klikata oikealla puolella olevaa ”Global Settings”-valikkomerkkiä nähdäksesi portsarin kokonaiskokoonpanon.

ZNC asentaa /usr/lib/znc moduulikokoelman (Jaetut objektit), jonka voi ladata tai purkaa taustaprosessin ollessa käynnissä. Jos vierität alas alas näet luettelon yleisistä moduuleista, jotka vaikuttavat bouncerin toimintaan, jonka voit ottaa käyttöön/poistaa käytöstä toggling valintaruudut ”Nimi” – sarakkeessa. Minun tapauksessani, olen ” log ” käytössä, koska haluan minun portsari tallentaa tekstitiedostoon kaikki viestit lähetetään kanavat olen jäsen.

ZNC: n Yleismoduulit

Klikkaa ”Hallitse käyttäjiä” oikeasta valikosta ja avaa käyttäjäasetuspaneeli. Napsauta ”Lisää” lisätäksesi uuden käyttäjän ja täyttääksesi yksityiskohdat: käyttäjätunnus, salasana (huomaa, että tätä salasanaa käytetään vain itsesi todentamiseen ZNC: llä, sitä ei käytetä IRC-palvelimen kanssa), IRC-tiedot ja luettelo moduuleista, jotka haluat ladata erityisesti tälle käyttäjälle.

ZNC: n käyttäjätiedot

napsauta sitten alareunassa ”Tallenna ja jatka”, jotta voimme lisätä IRC-verkon tälle käyttäjälle.

verkon lisääminen käyttäjälle

täytä tiedot IRC-verkosta, johon käyttäjä liitetään, ja ota valinnaisesti käyttöön moduulit, jotka haluat ladata automaattisesti, kun muodostat yhteyden tähän verkkoon. Yksi tällainen moduuli voi olla sasl, jos haluat todentaa tämän menetelmän avulla IRC-palvelimella. Otan tämän moduulin käyttöön tässä verkossa.

tekstiruutuun ”tämän IRC-verkon palvelimet” syötät sen IRC-palvelimen tiedot, johon haluat muodostaa yhteyden muodossa

<server> <port> <irc_password>

lisää porttiin plus-merkki osoittamaan SSL-yhteyttä. <irc_password> on IRC-palvelimelle /NickServ – komennon kautta rekisteröitymisesi salasana, joka on täysin erillinen siitä salasanasta, jonka asetit todennettavaksi yllä olevalle portsarille.

esimerkiksi, jos haluat muodostaa yhteyden freenode IRC-verkkoon SSL: n kautta aiemmin Rekisteröidyllä tilillä, tämän tekstiruudun sisältö olisi

irc.freenode.net +6697 myNickServPassword123

muuten se voisi yksinkertaisesti olla

irc.freenode.net 6667

määritettäessä IRC-verkkoa

huomaat, että IRC-salasanasi on tallennettu palvelimeen tekstimuodossa. Siksi suosittelin aikana VPS asennusvaiheet salata EBS tilavuus ja luonnollisesti, on erittäin tiukka control kuka voi käyttää bouncer palvelin. VPS-suojausryhmän lukitsemista siten, että vain hyvin pienestä IPs-osajoukosta tulevat yhteydet sallitaan, suositellaan.

klikkaa ”Tallenna ja jatka” uudelleen. Voit nyt valinnaisesti lisätä listan kanavista, joihin haluat portsarin kirjautuvan, mutta se muistaa myös ne, joihin liityt, kun muodostat yhteyden siihen.

meillä on nyt AWS VPS (Virtual Private Server), jossa on täysin toimiva ZNC: n asennus. Viimeinen keino on osoittaa IRC-asiakas portsarille.

yhteyden portsariin

aion käyttää irssiä yhteyden portsariin. Tässä ovat vaiheet seurasin saada se toimimaan. Mittarilukema voi vaihdella eri asiakas, kuten HexChat tai mIRC, mutta tiedot itse pitäisi pysyä enimmäkseen sama.

Launch irssi täsmentää nimimerkkiä, jota käytetään yhteyden muodostamiseen portsariin

$ irssi -n <username>

Luo uusi verkko nimeltä freenodebnc ja lisää siihen bouncerin yksityiskohdat. Koska yhdistän Freenoden IRC-palvelimeen SSL: n kautta, käytän sen paljastamaa porttia turvallisiin yhteyksiin, 6697: ään ja ohitan -ssl – lipun sisään. username/freenode on käyttäjätunnuksen ja verkon yhdistelmä, jonka loimme ZNC user config-paneeliin. password on salasana, jota käytämme tunnistautuaksemme ZNC: llä, emme IRC-palvelimelle.

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

suorita seuraavat komennot tallentaaksesi nämä muutokset irssi-asetustiedostoon ja muodosta yhteys bounceriin.

/save/connect freenodebnc

jos latasit SASL-moduulin (voit tarkistaa, onko se ladattu ajamalla /msg *status ListModules), sinun on määritettävä se tässä vaiheessa. Kun olet yhteydessä portsariin, suorita seuraavat komennot IRC-asiakkaallesi.

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

missä NickServName on rekisteröity käyttäjätunnuksesi IRC-palvelimella ja password salasana, jolla tunnistaudut edellä mainitulle palvelimelle.

Yhdistä nyt IRC-verkkoon uudelleen konfiguroidulla SASL-moduulilla.

/msg *status jump

yhteyden muodostaminen voi kestää muutaman hetken (varsinkin jos yhdistät SSL: n kautta ja käytät todennusmekanismeja, kuten SASL), mutta tämän jälkeen saat pysyvän, turvallisen istunnon IRC-palvelimella, jonka voit vapaasti keskeyttää ja jatkaa milloin haluat. Hauskaa juttelua!