Puncte:0

Dirijarea traficului unei mașini prin tunelul GRE către un NAT la distanță

drapel vn

A trebuit să rezolv următoarea dilemă pentru un prieten și m-am gândit să documentez cum am procedat aici...

Iată situația:

  • Rețeaua lui de acasă 192.168.1.0/24 și se află în spatele unui router Linux care efectuează NAT și are o adresă IP publică AAAA. Routerul Linux rulează openSUSE 15.3.
  • În rețeaua de domiciliu există un anumit dispozitiv de interes la adresa 192.168.1.17.
  • Are o mașină Linux de la distanță care se află singură pe Internet la adresa B.B.B.B. Această mașină este un server găzduit și locuiește într-o altă parte a țării. Această mașină rulează și openSUSE 15.3.

Ceea ce vrea el este pentru toți 192.168.1.17traficul lui să fie direcționat prin, și NAT de către, mașina de la distanță B.B.B.B, dar pentru ca toate celelalte mașini din rețeaua de domiciliu să nu fie afectate (adică, încă direcționate prin routerul de acasă AAAA ca de obicei).

Efectul este că pentru lumea exterioară toate 192.168.1.17traficul lui va părea să provină din B.B.B.B în loc de AAAA.

Acesta este echivalentul NAT/rețea al „aruncându-ți vocea" pentru o anumită mașină din rețeaua dvs.

Puncte:0
drapel vn

Iată cum am făcut asta.

Am amenajat un tunel GRE între AAAA și B.B.B.B (interfață gre1 pe ambele servere), cu adrese IP de tunel intern punct la punct 10.0.0.1 și 10.0.0.2 (respectiv). Rețineți că nu este nevoie de criptare, deoarece pachetele din tunel vor fi oricum despachetate și trimise prin Internet așa cum sunt.

În continuare, trebuie să configuram B.B.B.B pentru a permite NAT pe interfața sa externă eth0. Acest lucru se face prin firewalld. Apoi trebuie să adăugăm o regulă personalizată la firewalld pentru a nu bloca pachetele GRE primite. Am pus gre1 interfață în de încredere astfel încât toate pachetele care sosesc în interiorul tunelului sunt permise și vor primi NAT.

În rețeaua de acasă, eram deja configurați prin firewalld ca router NAT, astfel încât singurele lucruri rămase de făcut au fost (a) să creați cealaltă parte a tunelului GRE și (b) să faceți deviația Linux 192.168.1.17trafic de ieșire în tunel. Acest ultim pas este partea ușor dificilă.

Detalii mai jos...

Stabilit peste B.B.B.B (Server la distanta)

Adăugați interfață gre1:

    # /etc/sysconfig/network/ifcfg-gre1
    STARTMODE='onboot'
    BOOTPROTO='static'
    TUNNEL='gre'
    TUNNEL_LOCAL_IPADDR='B.B.B.B'
    TUNNEL_REMOTE_IPADDR='A.A.A.A'
    IPADDR='10.0.0.2'
    REMOTE_IPADDR='10.0.0.1'
    TUNNEL_TTL='64'
    ZONE=de încredere

Adăugați ruta către rețeaua de domiciliu și partea de la distanță a conexiunii P2P prin gre1:

    # /etc/sysconfig/network/ifroute-gre1 
    # Opțiuni de interfață Destination Gateway Netmask
    192.168.1.0/24 - - -
    10.0.0.1 - - -

Configurați firewalld prin intermediul yast2 firewall

  • Pune interfața eth0 in zona extern
  • Pune interfața gre1 in zona de încredere
  • Adăugați o regulă de firewall personalizată la zonă extern permițând intrarea pachetelor GRE de la AAAA
  • Adăugați reguli de firewall personalizate pentru a fixa TCP MSS la ambele extern și de încredere zone (necesită firewalld >= 1.0.0)

Fișiere de zonă în /etc/firewalld/zones:

    # /etc/firewalld/zones/external.xml    
    <zonă>
        <short>Extern</short>
        <service name="ssh"/>
        ...
        <mascaradă/>
        <rule family="ipv4">
          <source address="A.A.A.A"/>
          <accept/>
        </regulă>
        <regula>
          <tcp-mss-clamp value="1420"/><!-- necesită firewalld >= 1.0.0 -->
        </regulă>
        <interface name="eth0"/>
    </zonă>
    # /etc/firewalld/zones/trusted.xml    
    <zone target="ACCEPT">
      <short>De încredere</short>
      <description>Toate conexiunile la rețea sunt acceptate.</description>
      <regula>
          <tcp-mss-clamp value="1420"/><!-- necesită firewalld >= 1.0.0 -->
      </regulă>
      <interface name="gre1"/>
    </zonă>

Stabilit peste AAAA (Server de rețea de domiciliu)

Aceasta presupune că AAAA este deja configurat pentru NAT 192.168.1.0/24 reţea, etc.

Adăugați interfață gre1:

    # /etc/sysconfig/network/ifcfg-gre1
    STARTMODE='onboot'
    BOOTPROTO='static'
    TUNNEL='gre'
    TUNNEL_LOCAL_IPADDR='A.A.A.A'
    TUNNEL_REMOTE_IPADDR='B.B.B.B'
    IPADDR='10.0.0.1'
    REMOTE_IPADDR='10.0.0.2'
    TUNNEL_TTL='64'
    ZONE='de încredere'

Adăugați o rută către partea la distanță a conexiunii P2P prin gre1:

    # /etc/sysconfig/network/ifroute-gre1 
    # Opțiuni de interfață Destination Gateway Netmask
    10.0.0.2 - - -

Configurați firewalld prin intermediul yast2 firewall:

  • Pune interfața gre1 in zona de încredere
  • Interfață eth0 ar trebui să fie deja în zonă extern

Activarea redirecționării

Aceasta este "partea dificilă" finală care provoacă 192.168.1.17Traficul de ieșire al lui va fi deviat prin tunelul GRE.

Pentru a activa redirecționarea, executați aceste comenzi AAAA:

$ ip route flush tabelul 10
$ ip route adăugați tabelul 10 la implicit prin 10.0.0.2 dev gre1
$ ip regula adăugare de la 192.168.1.17 tabel 10 prioritate 10

Pentru a anula comenzile de mai sus:

$ ip regula del din 192.168.1.17 tabel 10 prioritate 10
$ ip route flush tabelul 10

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.