Puncte:0

Serverul Ubuntu ca router NAT privat și ruter public

drapel cn

Încerc să fac ceva ce nu am mai încercat până acum. Am un Dell PowerEdge 540 pe care l-am instalat Ubuntu. Am instalat o linie Comcast Business și am următoarea configurație fizică de rețea:

Ubuntu Server 20.04.3 LTS

enp10s0f0: (card suplimentar SFP+ de 10 gb)
IPv4: 5*.2*.204.214
Subrețea: 255.255.255.252
Gateway: 5*.2*.204.213

enp10s0f1: (card suplimentar SFP+ de 10 gb)
IPv4: 5*.2*.205.1
Subrețea: 255.255.255.0

eno1: (1gb cupru Ethernet)
IPv4: 10.0.0.0
Subrețea: 255.0.0.0

Aceasta este rezultatul adresa ip:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue stare UNKNOWN grup implicit qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
    inet6 ::1/128 scope host
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq stare UP grup implicit qlen 1000
    link/ether 00:1e:c9:b5:b2:3c brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/8 brd 10.255.255.255 scope global eno1
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
    inet6 ****::***:c9ff:feb5:b23c/64 scope link
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
3: eno2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop stare JOS grup implicit qlen 1000
    link/ether 00:1e:c9:b5:b2:3e brd ff:ff:ff:ff:ff:ff
4: enp12s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:10:18:0d:a3:7e brd ff:ff:ff:ff:ff:ff
5: enp10s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq stare UP grup implicit qlen 1000
    link/eter f4:e9:d4:92:9d:d0 brd ff:ff:ff:ff:ff:ff
    inet 5*.2*.204.214/30 brd 5*.2*.204.215 scope global enp10s0f0
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
    inet6 fe80::f6e9:d4ff:fe92:9dd0/64 scope link
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
6: enp10s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq stare UP grup implicit qlen 1000
    link/eter f4:e9:d4:92:9d:d2 brd ff:ff:ff:ff:ff:ff
    inet 5*.2*.205.1/24 brd 5*.2*.205.255 scope global enp10s0f1
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
    inet6 ****::****:d4ff:fe92:9dd2/64 scope link
       valid_lft pentru totdeauna preferred_lft pentru totdeauna

Am următoarele rute ip configurate:

implicit prin 5*.2*.204.213 dev enp10s0f0 proto static
10.0.0.0/8 dev eno1 proto kernel scope link src 10.0.0.1
5*.2*.204.212/30 dev enp10s0f0 proto kernel scope link src 5*.2*.204.214
5*.2*.205.0/24 dev enp10s0f1 proto kernel scope link src 5*.2*.205.1

Și următoarele salvate în mine /etc/rc.local fişier:

#!/bin/sh -e

iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -F
iptables -X

##################### Activați Nat ########################## ##
sudo echo "1" > /proc/sys/net/ipv4/ip_forward

################### Activați Nat pentru interne ######################### #
iptables -t nat -A POSTROUTING -o enp10s0f0 -j MASQUERADE
#iptables -t nat -A POSTROUTING -o enp12s0f1 -j MASQUERADE

################## Activare jurnal #######################
#iptables -A IEȘIRE -j Jurnal
#iptables -A INTRARE -j Jurnal
#iptables -A FORWARD -j Jurnal

############# Permite în mod implicit ####################
iptables -P INTRARE ACCEPT
iptables -P ACCEPT IEȘIRE
iptables -P FORWARD ACCEPT

########################## Permite conexiunea de intrare ################### #########
iptables -A INPUT -m conntrack --ctstate „STABILIT, RELATED” -j ACCEPT

################################ Permite conexiunea de ieșire ############# #########
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

####################### permite interne spre extern
iptables -A FORWARD -i eno1 -m stare „INSTABILIT, RELATED” -j ACCEPT
#iptables -A FORWARD -i eno1 -o enp12s0f1 -m stare „INSTITUT, ÎN RELATE” -j ACCEPT
###iptables -A FORWARD -i eno1 -o enp10s0f1 -j ACCEPT
iptables -A FORWARD -i eno1 -o enp10s0f1 -j ACCEPT
#iptables -A FORWARD -i eno1 -o enp12s0f0 -j ACCEPT
#iptables -A FORWARD -i enp10s0f1 -o enp10s0f0 -j ACCEPT
#iptables -A FORWARD -i enp10s0f0 -o enp12s0f1 -j ACCEPT
iesirea 0

O diagramă de rețea: Diagrama de rețea, legată deoarece încă nu pot posta imagini

După cum probabil veți observa, am petrecut mult timp citind online care este cea mai bună modalitate de a aborda acest lucru și o mare parte din aceasta este comentată. După cum îmi imaginez, am nevoie doar de NAT pe eno1 interfata. Dar, din moment ce este Linux, am nevoie iptables pentru a face rutare non-NAT? Am încercat să-l dezactivez, iar rețeaua publică nu a funcționat deloc.

Chiar și atunci când pun un lucru să funcționeze, sfârșește prin a sparge altceva. Au trecut ani de când am luat un curs Cisco și nu sunt obișnuit să mă simt atât de ignorant. Sper cu adevărat că cineva mă poate ajuta să găsesc cea mai bună modalitate de a implementa acest lucru sau, eventual, să identific orice defecțiuni pe care le-am făcut și care cauzează eroarea.

Nikita Kipriyanov avatar
drapel za
Care este problema mai exact? Ce mai exact ruptură în „fiecare caz”, și cum, de asemenea, care sunt „cazurile”? De asemenea, vă rugăm să nu postați un script pe care îl utilizați pentru a configura un firewall. Mai bine postați un export al unui firewall care rulează: `iptables-save`.
Nikita Kipriyanov avatar
drapel za
`5*.2*.205.0/24 via 5*.2*.205.1 dev enp10s0f1` â chiar ai ruta aia? Din configurația adreselor IP mă aștept să văd `5*.2*.205.0/24 src 5*.2*.205.1 dev enp10s0f1`, care este un lucru foarte diferit.
drapel cn
Vă mulțumesc pentru un răspuns rapid! Problemele pe care le am duc la ca rețeaua **10.0.0.0/8** să devină imposibil de rutat, fie ca rețeaua **5*.2*.205.1/24** să devină imposibil de rutat. O problemă majoră a fost faptul că nu înțelegem corect rutarea Linux. Am schimbat configurația, eliminând toate **iptable-urile** folosind `iptables --flush`, urmat de `ip route del 5*.2*.205.0/24` și `ip route add 5*2*.205.0/24 src 5*.2*.205.1 dev enp10s0f1`, deoarece noua mea preocupare este că IP-urile publice din afara nu pot ajunge la niciunul dintre IP-urile mele publice „interne”. IP-urile publice se pot conecta acum în exterior fără **iptables** acum.
drapel cn
Am încercat `0.0.0.0/1 prin 50.220.205.1 dev enp10s0f1` fără succes. O să încerc în continuare!
drapel cn
Noua **rută ip** arată astfel: `implicit prin 5*.2*.204.213 dev enp10s0f0 proto static 10.0.0.0/8 dev eno1 proto kernel scope link src 10.0.0.1 5*.2*.204.212/30 dev enp10s0f0 proto kernel scope link src 5*.2*.204.214 5*.2*.205.0/24 dev enp10s0f1 proto kernel scope link src 5*.2*.205.1 `
Nikita Kipriyanov avatar
drapel za
Nu aveți nevoie de rute adăugate manual. Singurele rute de care aveți nevoie sunt rutele „interfață”, adăugate pentru a corespunde măștilor de rețea și ruta implicită. Se pare că le ai pe toate. Și, din nou, iptables nu are nimic de-a face cu rutarea. De asemenea, vă rugăm să actualizați întrebarea cu informațiile îmbunătățite, în loc să răspundeți în comentarii; Ți-am copiat tabelul de rutare acolo, restul depinde de tine. Și răspunsul meu de mai jos încă se aplică.
drapel cn
Iti multumesc pentru clarificare! Esti tare :-)
Puncte:1
drapel za

Presupun că ISP-ul tău a configurat rute către rețea 5*.2*.205.0/24 spre tine via 5*.2*.204.214.

Să presupunem următoarea stare: Netfilter este în starea implicită (iptables-salvare nu arată reguli și toate politicile sunt ACCEPT). Rețeaua dvs. publică 5*.2*.205.0/24 funcționează, gazdele au gateway-ul implicit 5*.2*.205.1. Rețeaua privată 10.0.0.0/8 (cu gateway 10.0.0.1) nu funcționează deoarece NAT nu este configurat. De asemenea, m-aș aștepta la gazde în 10.0.0.0/8 și 5*.2*.205.0/24 pentru a putea să se vadă și să comunice între ei.

Nu trebuie să faci aproape nimic pentru a realiza acest lucru. Doar configurați toate IP-urile cu măști de rețea și activați redirecționarea IP în kernel (de ex. net.ipv4.ip_forward=1). Tabelul dvs. de rutare ar trebui să fie ca cel pe care îl aveți deja.

Pentru 10.0.0.0/8 pentru a lucra spre Internet, trebuie doar să adăugați următoarea regulă:

iptables -t nat -A POSTROUTING -o enp10s0f0 -s 10.0.0.0/8 -j MASQUERADE

Va face NAT pentru adresele „gri” care ies în sălbăticie. Puteți înlocui -j MASCARATĂ cu oricare dintre -j SNAT --to-source 5*.2*.205.1 (adresa care este atribuită enp10s0f1) sau 5*.2*.204.214.

Dacă doriți să luați în considerare rețeaua 5*.2*.205.0/24 ca fiind ca Internetul, puteți adăuga o altă regulă NAT și puteți traduce conexiunile care intră în el 10.0.0.0/8 de asemenea. Această altă regulă va fi aceeași cu prima, cu excepția filtrului de interfață de ieșire -o enp10s0f1. Dar poate fi util să-l lăsați fără NAT, mai ales dacă controlați decât rețeaua și doriți ca gazdele din ea să vadă direct 10.0.0.0/8 adrese mai degrabă decât să le ascunzi sub adresa porții.

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.