80 - 8080 arasındaki bağlantı noktalarını yönlendirin ve yerel makinede çalışmasını sağlayın


61

Makinemde 80 - 8080 bağlantı noktası trafiğini yönlendirdim

sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080

Kendi makinem hariç tüm dünya için gayet iyi çalışıyor. Ben bir geliştiriciyim ve 80-8080 numaralı portları kendim için yönlendirmem gerekiyor.

Benim IP 192.168.0.111

Web sunucum 8080 portunda çalışıyor

Sunucunun çalıştığı makinenin http://192.168.0.111/yerine web sitesini açmak istiyorum http://192.168.0.111:8080/.


Afedersiniz, pardon ama 80'den 8080'e bağlantı noktasını iletmenin amacı nedir?
ma11hew28

2
@ mattdipasquale, normal kullanıcılar 80 numaralı bağlantı noktasına erişemez, bu nedenle normal bir kullanıcı olarak python şişesi gibi bir web hizmetini çalıştıramazsınız.
Christian

Neden web sunucusunu sadece 80 numaralı bağlantı noktasına bağlamıyorsunuz?
David Foerster

5
root olmayan bir kullanıcı bağlantı noktalarına 80/443 bağlanan edemez ve o root olarak kendi web hizmetini çalıştırmak istediğiniz doesnt çünkü onun tahmin ediyorum ..
Pavel K.

Yanıtlar:


79

Geri döngü arayüzü OUTPUTiçin tasarlanan paketler zincirden geçmediği için zinciri kullanmanız gerekir. Aşağıdaki çalışması gerekir; olarak çalıştır :PREROUTINGroot

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080

1
80 numaralı bağlantı noktasının küresel olarak güvenilir olması gerekiyor mu? Çözümünüzü denedim, 8080 numaralı bağlantı noktama erişilebilir, ancak 80 bu nedenle işe yaramadı. @heemayl
alper

2
Bu işe yaramadı, neden
oylandığından

@Diyoda_ Lütfen tanımlama çalışmadı .
heemayl

3
Bunun ubuntu'da işe yaramadığını onaylayabilirim 18.04
Ahmed Hamdy

2
Ubuntu 18.10'da benim için işe yaramadı
Christopher Bradshaw

6

Basitçe sadece 80 ve 8080 portlarına izin veren iptables'ları kullanın, sonra 80 - 8080'e yönlendirin.

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Teşekkürler! Ubuntu 19 üzerinde çalışıyor
Vladimir Ishenko

1
Sonra iptable değişiklikleri kurtarmak için iyi olurdusudo apt-get install iptables-persistent
Vladimir Ishenko

6

Bu benim için çalıştı.

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

+1 Ubuntu 18.04'te benim için çalışıyor (en azından TCP için), 7000-> 7001 portunu yaptı ve 7001 portunu dinleyen sunucular 7000 portundan gelen bağlantıları aldı :)
hanshenrik

1
tho doğru ağ arayüzü kullandığınızdan emin olun eth0, tüm sistemlerde çağrılmaz
hanshenrik

4

Bunun yerine, iptablesdeneyebilirsiniz: sudo ssh -gL 80:127.0.0.1:8080 localhost


2
Bu bir seçenek ama tam olarak istediğim değil çünkü zaten 80 numaralı bağlantı noktasında bir web sunucum var. Bunu iptables ile yapmayı ve 80 numaralı bağlantı noktasındaki web sunucusunu çalışır durumda tutmayı tercih edeceğim. Sanırım kural yerine farklı adıma PREROUTING
Max

Evet - bu, Max'in önerdiği şekilde bağlantı noktasını yönlendirdiğinizi dinleyen bir şeyiniz varsa, bağlantı noktası çakışmasına neden olur. Yukarıdaki cevap daha genel bir durumdur.
cgseller

Bu çözüm girişimi sırasında "Bağlantı reddedildi" alıyorum.
mitchus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.