LAN cihazını şlüzün öz tunel ünvanlarından birində təqdim etmək üçün bir sətir NAT kifayətdir. Bağlantı yenə də uğursuz olur, çünki cavab verən cihaz müştərinin ünvanına həmin şlüz vasitəsilə çatmağın mümkün olduğunu bilmir. Paketi müştəridən içəri doğru izləyin, sonra cavabı geriyə, çölə doğru izləyin və itkin yarısı aydın görünəcək.

Müştərinin baxış bucağından başlayın

Bu nümunədəki müştəri VPN hovuzunda, 10.62.0.0/24 şəbəkəsindədir və 8080 portunda 10.62.0.1 ünvanına qoşulur. Bu ünvan şlüzün özünə aiddir, ona görə paket başqa bir həmkarın yox, şlüzün nüvəsinə gəlir. Şlüzün arxasında LAN 172.21.4.0/24 şəbəkəsidir. Şlüz 172.21.4.10 ünvanını saxlayır, HTTP xidməti verən cihaz isə 172.21.4.40-dır.

Başqa bir VPN həmkarına aid ünvan şlüzün xidmət ünvanı ilə dəyişdirilə bilməz. Əgər müştəri həmkarın ünvanına qoşulursa, heç bir şlüz qaydası işə düşmür və bütün bu gəzinti səhvdir.

Təyinat tərcüməsini qəsdən məhdudlaşdırın

Dar variant bir portu təqdim edir və yalnız təyinatı yenidən yazır. Paket protokolunu və mənbəyini saxlayır; gəzintinin qalan hissəsini maraqlı edən də budur.

iptables -t nat -A PREROUTING -i tun0 -s 10.62.0.0/24 -d 10.62.0.1 -p tcp --dport 8080 -j DNAT --to-destination 172.21.4.40:80

Protokol və port meyarları olmayan qayda geniş variantdır: müştərinin seçdiyi portu qoruyur, yalnız ünvanı dəyişir. Bütün hostun təqdim edilməsi nəzərdə tutulduqda bu qanunidir, bir xidmət nəzərdə tutulduqda isə səhvdir. Qaydanı geri oxuyun və interfeys adını təsdiqləyin. Səhv interfeysdəki DNAT qaydası heç nəyə uyğun gəlmir, bu da çatışmayan qayda ilə eyni fasilə yaradır və cihaza baxmaqla bir saat itirir.

Yönləndirmə sərhədi razılaşsın

Tərcümə başlığı dəyişir, icazə vermir. Standart buraxma siyasəti ilə yönləndirilmiş axına öz icazəsi lazımdır, dönüş istiqaməti isə siyasətinizdə çox güman artıq olan qurulmuş qaydaya ehtiyac duyur.

iptables -A FORWARD -i tun0 -o lan0 -d 172.21.4.40 -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Hər DNAT axını üçün qeyd-şərtsiz icazə bu dizayndan genişdir və sonradan başqası tərəfindən əlavə edilən uyğunlaşdırmalara da imkan verəcək. Təyinatı və portu adlandırın, qalanı bağlı saxlayın. Əgər yönləndirmə qaydasındakı sayğaclar sıfırda qalır, NAT sayğacları isə artırsa, paket sizin qaydanızdan əvvəl atılır. İkinci nüsxə əlavə etmək yerinə zəncir sırasını oxuyun.

Cihaz bir şəkildə cavab verməlidir

Tərcümədən sonra cihaz 10.62.0.0/24 daxilində mənbə görür. Cavabı standart şlüzünə gedir; bu, VPN şlüzü deyil, LAN marşrutlaşdırıcısıdır, əgər nəsə başqa cür deməzsə. İki quruluş bunu düzəldir və onlar ekvivalent deyil. Cihazda və ya LAN marşrutlaşdırıcısında marşrut 10.62.0.0/24 şəbəkəsini 172.21.4.10 ünvanına göndərir və müştəri mənbəyini qoruyur. Məhdud mənbə tərcüməsi isə müştərini şlüzün LAN ünvanının arxasında gizlədir.

ip route add 10.62.0.0/24 via 172.21.4.10 dev eth1
iptables -t nat -A POSTROUTING -s 10.62.0.0/24 -d 172.21.4.40 -o lan0 -p tcp --dport 80 -j SNAT --to-source 172.21.4.10

Seçimi xidmətin nəyə ehtiyacı olduğu müəyyən edir. Müştəri üzrə siyasət və mənalı jurnallar marşrutlaşdırılmış formanı istəyir; marşrut verilə bilməyən cihaz və ya mütləq LAN ünvanı görməli olan xidmət tərcümə edilmiş formaya işarə edir. Bir cavabı işlətmək üçün qlobal masquerade qaydasına əl atmayın. Bu, hər müştərini hər təyinatdan gizlədir və mənbə ünvanlarından asılı olan siyasətləri səssizcə pozur.

Şlüzün özündən sınaq keçirməyin

Şlüzdə 10.62.0.1 ünvanına yaradılan sorğu gələn PREROUTING-dən deyil, OUTPUT zəncirindən çıxır. Onun uğursuzluğu və ya uğuru müştəriyə baxan qayda haqqında heç nə demir və insanlar işləyən qaydanın pozulduğu qənaətinə məhz burada gəlir.

conntrack -L | grep 172.21.4.40
tcpdump -ni any 'port 8080 or port 80'

Həqiqi müştəri sorğusu işə salın və hər ikisini oxuyun. conntrack qeydi tətbiq edilən tərcüməni göstərir, tutmalar isə sorğunun LAN-a keçib-keçmədiyini və tunelə doğru cavab gəlib-gəlmədiyini göstərir. Qaydaları dəyişdikdən sonra təzə bağlantı istifadə edin, çünki mövcud vəziyyət əvvəlki uyğunlaşdırmasını saxlayır və köhnə üsulla uğursuz olmağa davam edəcək. Sonra bütün söhbəti təsdiqləyin: cihaz ünvanı, yönləndirmə icazəsi və cavab marşrutu eyni axını təsvir etsin.

Əlaqəli məqalələr