Segmenteringsfeil

SELV i 2018, når moderne, funksjonsrike direktemeldingsprogrammer som Gitter eller den ekstremt populære Slack, er like gjennomgripende Som noen gang, FORBLIR IRC den foretrukne kommunikasjonsmetoden for mange utviklere. Det er enkelt, stabilt, allestedsnærværende, og viktigst, fullt desentralisert. DET er en gammel protokoll skjønt, SOM IRC har sparket om SIDEN tidlig på nittitallet (IRC-protokollen RFC ble publisert I 1993). SOM sådan kommer IRC med sine begrensninger.

En av de mest bemerkelsesverdige for meg er mangelen på meldingsarkivering. Alle meldinger som sendes fra OG mottas AV EN IRC-klient, lagres ikke i maskinen din, og du får heller ikke en replay av de siste samtalene i en kanal du nettopp ble med. Hver gang du logger inn PÅ EN IRC chatterom, du får blanke ark. DETTE er upraktisk, GITT IRC er svært ofte brukt som en out-of-band kanal for kommunikasjon. Du blir med i en kanal, legger igjen et spørsmål og venter et par timer for at noen skal svare, da folk ikke pleier å overvåke IRC så ofte som de ville med andre direktemeldingsprogrammer.

Heldigvis Og kanskje ikke overraskende, dette har vært et løst problem for en stund nå. Den raskeste og enkleste metoden er å etablere en permanent tilkobling TIL IRC serveren fra en server under vår kontroll som er på 24/7 og etablere EN SSH / tmux økt med DET hver gang vi ønsker å sjekke TILBAKE PÅ IRC. Når vi er ferdige, bare løsne økten med C-a d PÅ GNU-skjermen eller C-b d på tmux. Dette løser problemet med mangler alle meldinger som sendes i en kanal mens vi var borte, men det er omtrent alt du får. Hvis du leter etter en løsning som tilbyr mye mer enn dette, er det på tide å ta en titt på dørvakter.

Hva er en bouncer-server?

en bouncer server er en server vi bruker som proxy for Å få TILGANG TIL IRC. En dørvakt vil ta VÅRE IRC-detaljer og etablere en tilkobling TIL EN IRC-server på våre vegne og til og med bli med i en liste over forhåndsdefinerte kanaler.

vi kobler deretter til denne bouncer-serveren fra VÅR IRC-klient i stedet for TIL IRC-serveren direkte, og fra dette punktet vil våre meldinger bli «spratt på» av bouncer til målserveren.

Dørvakter tilbyr flere fordeler, inkludert:

  • Vedvarende server og kanal økter
  • Logging kanal samtaler til en tekstfil for arkivering
  • Bouncer brukerautentisering
  • Automatisk IRC serverautentisering via NickServ eller SASL
  • Automatisere IRC bruker statuser (la & bort meldinger, etc.)
  • Og mye mer!

Sette opp bouncer-serveren på AWS

Vi skal sette opp vår egen Bouncer-server ved HJELP AV ZNC, DET mest populære bouncer-serverprogrammet, på en billig AWS EC2-forekomst.

Start en Ny Ubuntu Server 16.04 t2.nano EC2-forekomst med alle standardinnstillingene bortsett fra følgende:

  • Brukerdata: installer bouncer software (ZNC), opprett en bruker for prosessen og en katalog for å lagre filene og en systemd-enhetsfil for å starte den ved oppstart.
#!/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

siden systemd unit-filen er plassert direkte i /etc/systemd/system, vil den automatisk kjøres ved oppstart. Det er ikke nødvendig å aktivere det.

  • Delnett: kontroller at forekomsten er lansert i et offentlig delnett med en Internett-Gateway tilkoblet, så den er lett tilgjengelig fra Internett.
  • EBS volum: ditt znc (Bouncer) passord, IRC server passord og irc samtalelogger vil bli lagret i klartekst filer, så jeg anbefaler sterkt at du krypterer volumet.
  • Opprett en ny sikkerhetsgruppe for å feste til den slik at følgende porter er åpne:
    • SSH: så vi kan konfigurere forekomsten
    • TCP-port 7078 (enhver uforbeholden port vil gjøre, faktisk): Znc listening port
  • Sett» Navn » – taggen til noe meningsfylt, hvis du ønsker

generer Nå en Ny Elastisk IP-adresse Og knytt den Til forekomsten.

Installere ZNC

SSH i den nyopprettede EC2-forekomsten og kjør ZNC first time setup-prosessen, som vil be OSS om å sette en lytteport for bouncer og opprette en adminkonto. Velg alternativene som nedenfor.

$ 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

Dette vil generere en config-fil som vil bli lagret i hjemmekatalogen for brukeren vi ssh ‘ d i as (ubuntu hvis du bruker Standard Amazon-gitt Ubuntu Server AMI). La oss flytte de nyopprettede config-filene fra denne katalogen til /opt/znc og gi brukerens eierrettigheter til den.

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

Nå kan DU starte ZNC

$ sudo systemctl start znc

Sikre AT ZNC har startet vellykket

$ 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

Konfigurere ZNC

det første konfigurasjonstrinnet er fullført. Nå må vi legge til brukeren som vi vil logge på som OG ET IRC-nettverk for å knytte til den brukeren.

for å bruke de resterende innstillingene til dørvakt, vil vi koble til sin webkonfigurasjonsfrontend, tilgjengelig på porten vi konfigurerte den til å lytte på (i mitt tilfelle port 7078). Så i nettleseren din, skriv INN FØLGENDE URL: https://<bouncer_ip_address>:7078. Hvis du får en «manglende HTTPS-sertifikat» – feil eller lignende, kan du trygt ignorere dette og instruere nettleseren din om å fortsette. Logg inn som administratorbrukeren du opprettet før, ved hjelp av passordet du skrev inn.

ZNC web frontend

når du logger inn, kan du klikke på «Globale Innstillinger»-menyoppføringen på høyre side for å se på den generelle konfigurasjonen av bouncer.

ZNC installerer en samling av moduler (delte objekter) i /usr/lib/znc som du kan laste eller losse mens nissen kjører. Hvis du ruller ned til bunnen, ser du en liste over de globale modulene som påvirker driften av bouncer, som du kan aktivere / deaktivere ved å bytte av i avmerkingsboksene i kolonnen «Navn». I mitt tilfelle har jeg «log» aktivert som jeg vil at min bouncer skal lagre i en tekstfil alle meldingene som sendes i kanalene jeg er medlem av.

Znc Globale Moduler

Klikk på «Administrer Brukere» på høyre meny for å få opp brukerkonfigurasjonspanelet. Klikk nå på «Legg til» for å legge til en ny bruker og fyll inn detaljene: brukernavn, passord (merk dette passordet vil bare bli brukt til å autentisere DEG SELV MED ZNC, det vil ikke bli brukt MED IRC-serveren), IRC-detaljer og en liste over moduler som du kanskje vil laste inn for denne brukeren spesielt.

 Znc Brukerdetaljer

Klikk deretter på «Lagre og fortsett» nederst slik at VI kan legge TIL ET IRC-nettverk for denne brukeren.

Legge til et nettverk til en bruker

Fyll ut detaljene FOR IRC-nettverket denne brukeren vil bli assosiert med og eventuelt aktivere eventuelle moduler som du vil laste automatisk når du kobler til dette nettverket. En slik modul kan være sasl hvis DU ønsker å autentisere ved hjelp av DENNE metoden MED IRC-serveren. Jeg vil aktivere denne modulen på dette nettverket.

i tekstboksen «Servere av DETTE IRC-nettverket» skriver du inn INFORMASJONEN TIL IRC-serveren du vil koble TIL i formatet

<server> <port> <irc_password>

Legg til et plusstegn i porten for Å angi EN SSL-tilkobling. <irc_password> er passordet du brukte til Å registrere DEG PÅ IRC-serveren via kommandoen /NickServ, som er helt atskilt fra passordet du angir for å autentisere til dørvakt selv ovenfor.

for eksempel, for å koble Til Freenode IRC-nettverket via SSL med en tidligere registrert konto, vil innholdet i denne tekstboksen være

irc.freenode.net +6697 myNickServPassword123

Ellers kan det ganske enkelt være

irc.freenode.net 6667

Konfigurere IRC-nettverket

DU vil legge merke TIL AT IRC-passordet ditt er lagret i ren tekst på serveren. Dette er grunnen til at jeg anbefalte UNDER VPS-oppsettstrinnene for å kryptere EBS-volumet ditt, og selvfølgelig har du veldig tett kontroll over hvem som kan få tilgang til bouncer-serveren din. Låsing AV VPS – sikkerhetsgruppen for å bare tillate innkommende tilkoblinger fra en svært liten delmengde Av IPs anbefales.

Klikk på» Lagre og fortsett » igjen. Du kan nå eventuelt legge til en liste over kanaler du vil bouncer å logge deg inn, men det vil også huske de du bli med selv når du kobler til det.

VI har nå EN AWS VPS (Virtual Private Server) hosting en fullt funksjonell installasjon AV ZNC. Den siste tingen å gjøre er å peke VÅR IRC klient på dørvakt.

Koble til bouncer

jeg skal bruke irssi for å koble til bouncer. Her er trinnene jeg fulgte for å få det til å fungere. Kjørelengde kan variere på en annen klient Som HexChat eller mIRC, men detaljene selv bør forbli stort sett det samme.

Start irssi angi kallenavnet som skal brukes til å koble til dørvakt

$ irssi -n <username>

Opprett et nytt nettverk kalt freenodebnc og legg til bouncer-detaljene til det. Siden jeg kobler Til Freenode IRC-serveren over SSL, bruker jeg porten den eksponerer for sikre tilkoblinger, 6697 og passerer -ssl flagget inn. username/freenode er brukernavnet og nettverkskombinasjonen som vi opprettet PÅ znc user config-panelet. password er passordet vi bruker for å autentisere MED ZNC, ikke TIL IRC-serveren.

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

Kjør følgende kommandoer for å lagre disse endringene i irssi config-filen og koble til bouncer.

/save/connect freenodebnc

hvis DU lastet INN sasl-modulen (du kan sjekke om den er lastet ved å kjøre /msg *status ListModules), må du konfigurere den på dette tidspunktet. Så, når du er koblet til dørvakt, kjør følgende kommandoer på IRC-klienten.

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

Hvor NickServName er ditt registrerte brukernavn MED IRC-serveren og password passordet du bruker til å autentisere til den nevnte serveren.

koble Nå TIL IRC-nettverket med den omkonfigurerte sasl-modulen.

/msg *status jump

det kan ta litt tid for dørvakt å etablere tilkoblingen (spesielt hvis du kobler OVER SSL og bruker autentiseringsmekanismer som SASL) , men etter dette vil du få en permanent, sikker økt MED IRC-serveren som du er fri til å pause og gjenoppta når du vil. Glad chatting!