portul de expediere prin gateway in iptables linux

Având servere în centre de date sigure din Europa. Deschideți nor VPS server / VDS pe un SSD rapid în 1 minut!

Cel mai bun Web Hosting:
- va proteja datele împotriva accesului neautorizat într-un centru european de date securizat
- va plăti cel puțin în Bitcoin.
- Acesta va pune distribuție

- protecție împotriva atacurilor DDoS-
- gratuit de backup
- Uptime 99,9999%
- DPC - TIER III
- ISP - NIVELULUI I

Suport în 24/7/365 rusă lucra cu persoane juridice și persoane fizice. Ai nevoie de acum 24 de bază și 72 GB RAM. Vă rog!

Tarifele noastre competitive dovedesc că cele mai ieftine de găzduire pe care nu a știut!

O chestiune de minute, selectați configurația, să plătească și CMS pe un VPS este gata.
Bani Înapoi - 30 de zile!

Carduri bancare, moneda electronică prin intermediul unor terminale QIWI, Webmoney, PayPal, Novoplat și altele.

Pune o intrebare 24/7/365 Suport

Găsiți răspunsurile în baza noastră de date, și să respecte recomandările din

Oferta de la 8host.com

portul de expediere prin gateway in iptables linux

Acest ghid vă ajută să configurați iptables pentru a redirecționa portul la gazde folosind tehnologia NAT. Această setare permite de a preveni traficul către rețeaua privată printr-un gateway.

cerinţe

Pentru a lucra veți avea nevoie de:

  • Ubuntu 14.04 două gazde în aceeași rețea privată-datacenter activat.
  • Un utilizator cu acces la sudo pe fiecare gazdă.

Prima gazdă va fi folosit ca un firewall și o rețea privată router Dyal. Cea de a doua gazdă va acționa ca un server web, care este disponibil numai prin intermediul interfeței privat. Prima gazdă va transmite cererea de a deschide o interfață de server web, atunci ei vor veni la interfața sa privată.

aceste gazde

ip -4 adr arata domeniul de aplicare la nivel mondial
2: eth0. MTU 1500 qdisc pfifo_fast implicită a grupului de stat UP qlen 1000
INET 198.51.100.45 / 18 brd 45.55.191.255 domeniul de aplicare la nivel mondial eth0
valid_lft pentru totdeauna preferred_lft pentru totdeauna
3: eth1. MTU 1500 qdisc pfifo_fast implicită a grupului de stat UP qlen 1000
inet 192.168.1.5 / 16 brd 10.132.255.255 domeniul de aplicare eth1 la nivel mondial
valid_lft pentru totdeauna preferred_lft pentru totdeauna

ip traseu spectacol | default grep
implicit prin 111.111.111.111 dev eth0

Comanda afișează interfața conectată la gateway-ul implicit (în acest exemplu, eth0). De obicei, aceasta este o interfață deschisă.

Găsiți aceste valori pe fiecare mașină și să le utilizeze în activitatea viitoare.

Condiționat de gestionare a datelor

Pentru exemplul din manual, conventiilor de date gazde. Vă rugăm, în timpul funcționării, înlocuiți-le cu datele lor.

  • IP extern: 203.0.113.2
  • IP intern: 192.0.2.2
  • interfață deschisă: eth0
  • Interfață particulară: eth1
  • IP extern: 203.0.113.15
  • IP intern: 192.0.2.15
  • interfață deschisă: eth0
  • Interfață particulară: eth1

Configurarea Web Server

instalarea Nginx

În primul rând trebuie să instalați Nginx și configurați-l pentru a asculta interfața închisă. Deoarece serverul Web este disponibil numai în cazul în care corectă port forwarding de configurare.

Actualizați indexul pachetului, și instalați pachetul:

sudo apt-get update
sudo apt-get install Nginx

Configurare Nginx

Deschideți implicit gazdă virtuală:

sudo nano / etc / Nginx / site-uri activate / default

În găsi directiva asculta:

server de a asculta 80 default_server;
asculta [::]: 80 default_server ipv6only = on;
.
>

Fișierul apare de două ori. La început a asculta directivă trebuie să specifice serverul intern Web IP și specificați portul 80.

Acest ghid este destinat numai pentru IPv4, deoarece a doua directivă pentru a asculta, la IPv6, puteți pur și simplu șterge.

server de a asculta 192.0.2.2:80 default_server;
.
>

Salvați și închideți fișierul. Verificați sintaxa pentru erori:

În cazul în care nu există erori, reporniți Nginx:

sudo serviciu Nginx repornire

Verificați configurația Nginx

Acum trebuie să ne asigurăm că Nginx este disponibil numai pe o interfață privată.

Du-te la serverul de firewall și să încerce să acceseze secțiunea privată a interfeței de server web:

buclat --connect-timeout 5 192.0.2.2



Bine ati venit la Nginx!




.

Încercați să folosiți o interfață deschisă:

ondula --connect-timeout 5 203.0.113.2
curl: (7) Conectarea a eșuat la 203.0.113.2 portul 80: Conexiune refuzată

Configurarea redirecționarea

Faceți clic pe Firewall Server.

Activarea redirecționare în miez

Mai întâi trebuie să activați redirecționarea la nivel de kernel. În mod implicit, această caracteristică este dezactivată pe majoritatea sistemelor.

Pentru a activa redirecționarea pentru o sesiune, introduceți:

echo 1 | sudo tee / proc / sys / net / ipv4 / ip_forward

Pentru a activa redirecționarea în mod regulat, trebuie să editați fișierul /etc/sysctl.conf.

sudo nano /etc/sysctl.conf

Salvați și închideți fișierul, apoi actualizați setările:

sudo sysctl -p
sudo sysctl --system

Setarea firewall

  • Instalați iptables-persistente.
  • Salvarea unui set de reguli implicite în /etc/iptables/rules.v4.
  • Aflați cum puteți adăuga și modifica regulile de firewall.

După configurarea firewall-ul, aveți posibilitatea să adăugați o regulă port forwarding.

reguli de expediere

Deci, acum trebuie să configurați firewall-ul, astfel încât traficul la portul 80 eth0 interfață deschisă, redirecționat către interfața eth1 privată.

Conform configurației firewall-ului de bază, lanțul resetări FORWARD (DROP) traficul în mod implicit. Acum trebuie să adăugați o regulă care va redirecționa conexiunea la server-ul Web. Se recomandă să se limiteze doar la conexiunile necesare și blocul rămas.

chain-ul forward va accepta noi conexiuni destinate pentru portul 80 și primite de la interfața publică, și a le transfera la interfața privată. Noii compuși se găsesc pentru a extinde conntrack și pachetul TCP SYN.

sudo iptables -A FORWARD eth0 -i eth1 o- -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT

Această regulă va trece prin primul pachet firewall-ul, care este destinat să creeze o conexiune. De asemenea, este necesar pentru a permite orice tip de trafic ulterior, în ambele direcții, ca urmare a acestei conexiuni. Pentru a permite traficul între interfață deschisă și închisă (ESTABLISHED, RELATED), introduceți:

iptables -A FORWARD eth0 -i eth1 o- -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT
iptables -A FORWARD eth1 -i eth0 -m o- conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT

În cazul în care lanțul FORWARD utilizează o politică implicită diferită, setați o picătură de politică:

sudo iptables -P FORWARD DROP

Acum, firewall-ul permite traficul între interfață deschisă și închisă. Cu toate acestea, în timp ce iptables nu știe exact cum să direcționeze acest trafic.

reguli NAT

Acum trebuie să adăugați reguli iptables pentru trafic ruta. Pentru a putea modifica în mod corect pachetele iptables și comunicarea de sprijin între clienți și serverul web, aveți nevoie pentru a efectua două operații.

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destinație 192.0.2.2

Pentru a face acest lucru, trebuie să adăugați o regulă pentru lanțul POSTROUTING în tabelul nat. Se citește în mod direct înainte de a trimite pachetele prin rețea.

sudo iptables -t nat -A POSTROUTING o- eth1 -p tcp --dport 80 -d 192.0.2.2 -j SNAT --to-source 192.0.2.15

curl 203.0.113.15



Bine ati venit la Nginx!




.

Portul de expediere configurat.

Rezervarea drepturilor

Prin adăugarea de reguli pentru port forwarding, trebuie să le păstrați într-un set de reguli permanente ale firewall-ului.

sudo service iptables-persistente salva

sudo nano /etc/iptables/rules.v4

Editare tabel configurare filtru în lanț FORWARD. De asemenea, trebuie să modificați tabelul NAT, pe care doriți să adăugați reguli PREROUTING și POSTROUTING. În acest caz, aceste reguli vor arăta astfel:

* filtru
# Permiteți ieșire, dar picătură pachete de intrare și de expediere în mod prestabilit
: INPUT DROP [0: 0]
: DROP FORWARD [0: 0]
: OUTPUT ACCEPT [0: 0]
# lanțuri per-protocol personalizate
: UDP - [0: 0]
: TCP - [0: 0]
: ICMP - [0: 0]
# UDP de trafic acceptabil
# Trafic TCP acceptabil
-Un tcp -p TCP --dport 22 -j ACCEPT
# Trafic acceptabil ICMP
# Politica de acceptare șabloane
-O intrare -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT
-O intrare -j ACCEPT lo -i
# picătură de pachete invalide
-O intrare -m conntrack --ctstate INVALID -j DROP
trafic # Pass lanturi de protocol specifice
## permite numai conexiuni noi (stabilite și conexe ar trebui să fie deja tratate)
## Pentru TCP, în plus, permite doar noi pachete SYN deoarece acesta este valabil numai
## Metodă pentru stabilirea unei noi conexiuni TCP
-O intrare -p udp -m conntrack --ctstate NEW -j UDP
-O intrare -p tcp --syn -m conntrack --ctstate NEW -j TCP
-O intrare -p icmp -m conntrack --ctstate NEW -j ICMP
# Respingeți orice este scăzut până la acest punct
## Încercați să fie protocol specific w / mesaj de respingere
-O INPUT -p udp -j REJECT --reject cu icmp-port inaccesibil
-O intrare -p tcp -j REJECT --reject-cu-tcp resetare
-O INPUT -j REJECT --reject cu icmp-proto-unreachable
# Reguli pentru a transmite portul 80 la serverul nostru de web
# detaliile referitoare la rețea server web:
# * Adresă IP publică: 203.0.113.2
# * Private Adresa IP: 192.0.2.2
# * Interfață public: eth0
# * Interfață particulară: eth1
#
# Paravan de protecție detaliile referitoare la rețea:
#
# * Adresă IP publică: 203.0.113.15
# * Privat adresa IP: 192.0.2.15
# * Interfață public: eth0
# * Interfață particulară: eth1
-A FORWARD eth0 o- eth1 -I -p tcp --syn --dport 80 -m conntrack --ctstate NEW -j ACCEPT
-O FORWARD eth0 o- eth1 -i -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT
-O FORWARD eth1 o- eth0 -i -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT
# Sfârșitul de reguli de filtrare Redirecționarea
# Comite modificările
COMMIT
* prime
: PREROUTING ACCEPT [0: 0]
: OUTPUT ACCEPT [0: 0]
COMMIT
* nat
: PREROUTING ACCEPT [0: 0]
: INPUT ACCEPT [0: 0]
: OUTPUT ACCEPT [0: 0]
: POSTROUTING ACCEPT [0: 0]
# reguli pentru a traduce cererile de portul 80 al interfeței publice
# Așa că putem transmite corect la serverul de web folosind
# Interfață particulară.
# detaliile referitoare la rețea server web:
# * Adresă IP publică: 203.0.113.2
# * Private Adresa IP: 192.0.2.2
# * Interfață public: eth0
# * Interfață particulară: eth1
#
# Paravan de protecție detaliile referitoare la rețea:
#
# * Adresă IP publică: 203.0.113.15
# * Privat adresa IP: 192.0.2.15
# * Interfață public: eth0
# * Interfață particulară: eth1
-Un PREROUTING eth0 -p tcp -i --dport 80 -j DNAT --to-destinație 192.0.2.2
-A POSTROUTING -d 192.0.2.2 o- eth1 -p tcp --dport 80 -j SNAT --to-source 192.0.2.15
# Sfârșitul de traduceri NAT pentru trafic server de web
COMMIT
* de securitate
: INPUT ACCEPT [0: 0]
: ACCEPT FORWARD [0: 0]
: OUTPUT ACCEPT [0: 0]
COMMIT
* calandru
: PREROUTING ACCEPT [0: 0]
: INPUT ACCEPT [0: 0]
: ACCEPT FORWARD [0: 0]
: OUTPUT ACCEPT [0: 0]
: POSTROUTING ACCEPT [0: 0]
COMMIT

Salvați și închideți fișierul.

Verificați pentru erori în fișierul:

sudo iptables-restore -t

Dacă nu există erori, să actualizeze lista de reguli:

Reîncărcați sudo service iptables-persistente

concluzie

Acum, port forwarding cu iptables au stabilit. Aceasta tehnologie ne permite să treacă traficul prin poarta de acces firewall, în timp ce ascunde topologii de rețea.