ტრაფიკის გადამისამართება ერთი IP- დან და პორტიდან მეორე IP- სა და პორტში

სერვერების მართვისას ძალიან გავრცელებულია ტრაფიკის გადამისამართება.

დავუშვათ, ჩვენ გვაქვს სერვერი, რომელზეც მუშაობს გარკვეული სერვისები, მაგრამ რა მიზეზითაც ვცვლით ერთ-ერთ სერვისს (არ ვიცი, მაგალითად pop3 რომელიც 110 პორტია) სხვა სერვერზე. ჩვეულებრივი და ყველაზე ხშირი რამ იქნებოდა უბრალოდ IP- ის შეცვლა DNS ჩანაწერში, თუმცა თუ ვინმე იყენებდა IP- ს ქვე-დომენის ნაცვლად, მასზე გავლენა იქონიებს.

Რა უნდა ვქნა? ... მარტივი, გადამისამართება ტრაფიკი, რომელსაც სერვერი იღებს ამ პორტის მეშვეობით, იმავე პორტის სხვა სერვერზე.

სერვერი- node-lan-ethernet

როგორ დავიწყოთ ტრაფიკის გადამისამართება?

პირველი, რაც ჩვენ უნდა შეგვეძლოს გადამისამართება სერვერზე, ამისათვის ჩვენ შემდეგს დავდებთ:

echo "1" > /proc/sys/net/ipv4/ip_forward

ამ ინსტრუქციაში ნაჩვენები ყველა ბრძანება უნდა შესრულდეს ადმინისტრაციული პრივილეგიებით, მე გირჩევთ, რომ შესრულდეს უშუალოდ root მომხმარებელთან.

ასევე შეგიძლიათ გამოიყენოთ ეს სხვა ბრძანება, იმ შემთხვევაში, თუ წინა არ გამოგადგებათ (ეს ასე დამემართა CentOS– ზე):
sysctl net.ipv4.ip_forward=1
შემდეგ ჩვენ გადავტვირთავთ ქსელს:

service networking restart

RPM დისტროებში, როგორიცაა CentOS და სხვები, ეს იქნება:

service nertwork restart

ახლა ჩვენ გადავდივართ მნიშვნელოვანზე, ვუთხრათ სერვერს iptables რა გადამისამართება:

iptables -t nat -A PREROUTING -p tcp --dport <puerto receptor> -j DNAT --to-destination <ip final>:<puerto de ip final>

სხვა სიტყვებით რომ ვთქვათ, და მე ვახსენებ იმ მაგალითს, რასაც ჩვენ ვახსენებთ, გვინდა, რომ მთელი ტრაფიკი, რომელსაც იღებს ჩვენი სერვერი 110 პორტის მეშვეობით, სხვა სერვერზე გადამისამართებამაგ: 10.10.0.2), რომელიც კვლავ მიიღებს ამ ტრაფიკს 110 – ითეს იგივე მომსახურებაა):

iptables -t nat -A PREROUTING -p tcp --dport 110 -j DNAT --to-destination 10.10.0.2:110

10.10.0.2 სერვერი დაინახავს, ​​რომ ყველა პაკეტი ან მოთხოვნა მოდის კლიენტის IP– დან, იმ შემთხვევაში, თუ მათ სურთ მოთხოვნების ბანაობა, ანუ მე –2 სერვერმა დაინახოს, რომ მოთხოვნები ჩამოდის 1 – ლი სერვერის IP– ით (და ჩვენ ვიყენებთ გადამისამართებას), ეს ასევე იქნება ამ მეორე სტრიქონის დასმა:

iptables -t nat -A POSTROUTING -j MASQUERADE

რამდენიმე კითხვა და პასუხი

მაგალითში მე ერთი და იგივე პორტი გამოვიყენე ორივე შემთხვევაში (110), თუმცა მათ შეუძლიათ პრობლემების გარეშე გადაადგილება ტრაფიკიდან ერთი პორტიდან მეორეზე. მაგალითად, დავუშვათ, რომ მე მსურს გადამისამართება ტრაფიკი 80 პორტიდან სხვა სერვერზე 443 – ზე, ამისათვის ეს იქნება:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.10.0.2:443

ეს არის iptables, მათ შეუძლიათ გამოიყენონ ყველა სხვა პარამეტრი, რომელიც ჩვენთვის ცნობილია, მაგალითად, თუ ჩვენ გვინდა ტრაფიკის გადამისამართება მხოლოდ კონკრეტული IP– დან, ეს იქნება –ების დამატება … მაგალითად, გადამისამართება მხოლოდ ტრაფიკი, რომელიც მოდის 10.10.0.51-დან:

iptables -t nat -A PREROUTING -p tcp -s 10.10.0.51 --dport 80 -j DNAT --to-destination 10.10.0.2:443

ან მთელი ქსელი (/ 24):

iptables -t nat -A PREROUTING -p tcp -s 10.10.0.0/24 --dport 80 -j DNAT --to-destination 10.10.0.2:443

ჩვენ ასევე შეგვიძლია მივუთითოთ ქსელის ინტერფეისი –i– ით :

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j DNAT --to-destination 10.10.0.2:443

Დასასრული!

ეს, როგორც უკვე ვთქვი, არის iptables, შეგიძლიათ გამოიყენოთ ის, რაც უკვე ცნობილია, რომ სერვერმა გააკეთოს ზუსტად ის, რისი გაკეთებაც გსურთ.

მოგესალმებით

DedicatedServer_SubImage


სტატიის შინაარსი იცავს ჩვენს პრინციპებს სარედაქციო ეთიკა. შეცდომის შესატყობინებლად დააჭირეთ ღილაკს აქ.

19 კომენტარი დატოვე შენი

დატოვე კომენტარი

თქვენი ელფოსტის მისამართი გამოქვეყნებული არ იყო. აუცილებელი ველები აღნიშნულია *

*

*

  1. მონაცემებზე პასუხისმგებელი: მიგელ ანგელ გატონი
  2. მონაცემთა მიზანი: სპამის კონტროლი, კომენტარების მართვა.
  3. ლეგიტიმაცია: თქვენი თანხმობა
  4. მონაცემთა კომუნიკაცია: მონაცემები არ გადაეცემა მესამე პირებს, გარდა სამართლებრივი ვალდებულებისა.
  5. მონაცემთა შენახვა: მონაცემთა ბაზა, რომელსაც უმასპინძლა Occentus Networks (EU)
  6. უფლებები: ნებისმიერ დროს შეგიძლიათ შეზღუდოთ, აღადგინოთ და წაშალოთ თქვენი ინფორმაცია.

  1.   Fer დიჯო

    ეს ასევე შეგვიძლია გავაკეთოთ Firewall– იდან, რომელიც პორტის გადამისამართების საშუალებას იძლევა, არა? (შესაბამისი წესების გამოყენება).

    1.    KZKG ^ გაუარა დიჯო

      დიახ, რა თქმა უნდა, ბოლოს Firewall, როგორიცაა Pfsense ან სხვები, გამოიყენეთ iptables უკნიდან.

      1.    მოძალადე დიჯო

        უფრო ზუსტად რომ pfsense არ იყენებს iptables- ს, მაგრამ pf- ს, გახსოვდეთ, რომ ეს არის bsd შიგნით.

        1.    KZKG ^ გაუარა დიჯო

          მართალია, ჩემო ცუდი!

  2.   ნიკოლა დიჯო

    დიდი მადლობა რჩევისთვის

    ორიოდე ეჭვი მაქვს:
    1 - ცვლილება მუდმივია? ან ის დაკარგულია სერვერის გადატვირთვისას?
    2 - მე მაქვს მრავალი ინსტანცია (ვთქვათ A, B და C) იმავე ქვე ქსელში. მაგალითად, მე ვიყენებ წესს გარე IP– ზე ტრაფიკის მარშრუტისთვის, და B და C ინსტანციებით ტალღების ტესტირებით, ყველაფერი საოცრებაა. პრობლემა ისაა, რომ A მაგალითიდან არ მუშაობს. მე შევეცადე გამოიყენოთ თქვენი ip და loopback ინტერფეისი და არცერთი არ მუშაობს:
    $ iptables -t nat -A PREROUTING -p tcp –dport 8080 -j DNAT – დანიშნულების ადგილზე xxxx: 8080
    $ iptables -t nat -A PREROUTING -p tcp -i lo –dport 8080 -j DNAT – დანიშნულების ადგილზე xxxx: 8080

    $ curl ip-yyyy: 8080 / hello_world
    curl: (7) ip-yyyy პორტ 8080-თან დაკავშირება ვერ მოხერხდა: კავშირი უარყოფილია
    $ curl localhost: 8080 / hello_world
    დახვევა: (7) ვერ მოხერხდა localhost პორტის 8080 დაკავშირება: კავშირი უარყოფილია

    რაიმე იდეა რა პრობლემა შეიძლება იყოს?

    1.    KZKG ^ გაუარა დიჯო

      დიახ, ცვლილება დაკარგულია გადატვირთვისას, ამის თავიდან ასაცილებლად მოგიწევთ iptables-save & iptables-restore ან მსგავსი რამის გამოყენება.
      მე კარგად არ მესმოდა რისი გაკეთება გინდა, მაგალითად A?

      1.    ნიკოლა დიჯო

        მე მაქვს სერვერი, რომელიც მხარს უჭერს კავშირებს მხოლოდ კონკრეტული IP– დან (სერვერი A– სგან), არ შემიძლია ან მსურს სხვა IP- ების დამატება თეთრ სიაში (მასშტაბურობის პრობლემების გამო), ამიტომ მსურს, რომ გარე სერვერის მთელი ტრაფიკი გაიაროს განაცხადა სერვერმა (A).
        პრაქტიკული თვალსაზრისით, მე მაქვს გლობალური კონფიგურაციები, რომლებიც განსაზღვრავს რომელი IP გამოიყენოს თითოეული სერვისისთვის, ასე რომ, ამ შემთხვევაში ეს ასეა: ”ყველას, ვისაც სურს გამოიყენოს გარე სერვისი, უნდა გამოიყენოს IP A”
        მე წარმატებით მივაღწიე ამას ამ სტატიის მეთოდის გამოყენებით, მაგრამ შემექმნა პრობლემა, რომ მისი გამოყენებისას A სერვერს არ აქვს წვდომა სერვისზე საკუთარი ip- ის გამოყენებით (მაგრამ ყველა სხვა სერვერი ახერხებს ამას).
        ჯერჯერობით საუკეთესო, რაც მე ვიპოვნე, იყო სერვერის A / etc / მასპინძლების ფაილში რუკების დამატება, მიუთითებდა გარე ip- ზე, რაც გლობალურ პარამეტრს აღემატებოდა.

  3.   ბრაიბუტი დიჯო

    ძალიან კარგი, სხვა ფოსტის სერვერი რომ მქონდეს, შემეძლო 143 პორტიდან ტრაფიკის გადატანა server1- დან server2- ზე და ელ.ფოსტაზე მიმიწვდება server2- ზე, არა?

    დაკავშირებით

    1.    KZKG ^ გაუარა დიჯო

      თეორიულად კი, ასე მუშაობს. რა თქმა უნდა, თქვენ უნდა გქონდეთ სწორად დაინსტალირებული საფოსტო სერვერი server2

  4.   msx დიჯო

    სახის პოსტები, რომელთა წაკითხვაც გვსურს, მადლობა!

  5.   აბრაამ იბარა დიჯო

    შესანიშნავი სტატია, მე მაქვს პროექტი, რომელშიც ვმუშაობ და მინდოდა დამისვა კითხვა. აქ არის სამრეწველო კონცენტრატორები NAT ფუნქციით (ვფიქრობ, ისინი იყენებენ ქვემოთ მოცემულ IPTables), რომ თარგმნან IP მისამართი აღჭურვილობაში ცვლილებების შეტანის გარეშე, მაგალითად, მე მაქვს სერვერი 10.10.2.1, რომელიც კომუნიკაციას უწევს 10.10.2.X კომპიუტერს და გადართვის საშუალებით პროგრამირდება ისე, რომ კომპიუტერი, რომელსაც აქვს მისამართი 192.168.2.4, სინამდვილეში ჩანს სერვერიდან 10.10.2.5, მან თარგმნა ეს IP მისამართი ამ მისამართის სხვა კომპიუტერიდან მსურს გავაკეთო სერბულიდან Ubuntu ან სხვა დისტრიბუციით, რა წესები უნდა ჰქონდეს iptables?

  6.   კუკ დიჯო

    ძალიან კარგი ინფორმაცია გმადლობთ ^ _ ^

  7.   იისუსი დიჯო

    მოგესალმებით.
    პრობლემა მაქვს გადამისამართების გაკეთების მცდელობა. მე ავუხსენი:
    მე მაქვს მარიონეტული სერვერი Ubuntu- ში, 2 ქსელური ბარათით:
    eth0 = 192.168.1.1 დაკავშირებულია დანარჩენ ლოკალურ ქსელთან.
    როუტერთან არის დაკავშირებული eth1 = 192.168.2.2.
    მე მჭირდება ყველაფერი, რაც eth0– ს საშუალებით ხდება, E1– ის და ასევე მარიონეტულის საშუალებით (მე ვიყენებ Squid– ს, რომლის ნაგულისხმევი პორტია 3128) და IPTABLES კონფიგურაციაში კლავიშს ვერ ვპოულობ.
    მე არ მჭირდება რაიმე სახის შეზღუდვა, მხოლოდ ის, რომ ჩანაწერი რჩება მონახულებულ ვებ – მისამართების ჟურნალში.

    ვიმედოვნებ დამეხმარებით, რადგან ეს საკმაოდ რთული სამუშაოა, რომელიც ორიოდე დღის განმავლობაში მაშფოთებს.

    დიდი მადლობა.

  8.   გაბრიელ დიჯო

    მეგობარო, მე სხვა სერვერების ახალი წარმომადგენელი ვარ, წარმოდგენა არ მაქვს, მაგრამ მე მესმის თემა და სწრაფად ვსწავლობ, ჩემი კითხვა შემდეგია: მე მაქვს 2 სერვერი serv_1 და serv_2, რომლებიც ერთ და იმავე ინტრანეტთან მაქვს დაკავშირებული, ამ სერვერებში მე მაქვს საკუთარი ღრუბელი შექმნილი, მსურს გავაკეთო შემდეგი:

    რომ ip- ების გარკვეული დიაპაზონი მაგალითად rangeip_1 საკუთარი Cloud- ზე (ipowncloud) მისასვლელი ip- ის დაყენებისას მიმართულია serv_1- ისკენ და თუ ეს სხვაა, IP2 განთავსებული იგივე ipowncloud მიემართება serv_2- ისკენ, ეს იმისთვის რომ განთავსდეს 2 სერვერი ორ სხვადასხვა ქალაქში და IP დიაპაზონი განსხვავებულია, მაგრამ ისინი ყველა ერთ ქსელში არიან, ეს იქნება პირველი ნაწილი, მეორე გასაგები იქნება ამ ორი სერვერის სინქრონიზაცია ისე, რომ ისინი სარკეები იყვნენ ან რომ მირჩიონ ეს სიგანის ოპტიმიზაციის მიზნით band, გთხოვთ, თუ აპირებთ ამიხსნათ, თუ როგორ უნდა გავაკეთოთ ეს ეტაპობრივად, რომ არ მოხდეს სუპერ პროგრამისტის რეჟიმი = (

  9.   ანტონიო კარიზოზა დიჯო

    გამარჯობა, მაპატიეთ, მე მაქვს ჩამრთველი, რომელიც პასუხისმგებელია ყველა მოწყობილობის კომუნიკაციაზე, რომელიც ქმნის ჩემს ქსელს, და ამის შემდეგ ეკრანები და ბოლოს ინტერნეტიდან გასვლა, რა ხდება, მე მსურს გადამისამართება გაკეთდეს აქ გადართეთ და არ უნდა მიაღწიოთ Firewall– ს, თუ მოთხოვნილი სერვისი არ არის ინტერნეტი.

  10.   John დიჯო

    ამ მეთოდის გამოყენებით შეგიძლიათ HTTPS გადაიტანოთ HTTP- ზე?

  11.   ქალბატონი დიჯო

    გამარჯობა, იქნებ ცოტა გვიანია, მაგრამ მინდოდა გკითხოთ, როგორ უნდა გავაკეთო squid, რომ არ შეცვალოს კლიენტის IP, როდესაც მსურს იმავე ქსელში ვებ-სერვერთან დაკავშირება?

  12.   ლაფატ 32 დიჯო

    ცუდად ნუ მექცევი კითხვისთვის. შეიძლება ამის გაკეთება ვინდოუსში?

  13.   Martin დიჯო

    ეს ინფორმაცია ჩემთვის სასარგებლო იყო. როგორც ყოველთვის, თქვენ შეიძლება სანდო იყოთ, როდესაც ინგლისურ ენაზე ვერ ვპოულობ რამეს, ჩვეულებრივ, ესპანურად ვეძებ, ამ შემთხვევებში თითქმის ყოველთვის მოვედი ამ საიტზე. გმადლობთ.