Iptables mengalihkan ke localhost?

13

Misalkan saya memiliki jaringan dengan server yang merutekan semua koneksi dari dalam jaringan ke Internet. Bagaimana saya bisa mengatur iptables sehingga alih-alih merutekan koneksi masuk ke Internet, ia malah merutekannya ke localhost port 8080. Semua bantuan sangat dihargai.

DankMemes
sumber
Masalahnya adalah bahwa dengan pengalihan sederhana (NAT alamat tujuan), Anda akan kehilangan alamat IP tujuan asli. Apakah Anda ingin mengatur proxy HTTP transparan atau haruskah itu memproses protokol lain selain HTTP juga?
pabouk
Tidak masalah apakah itu transparan atau tidak
DankMemes
Mengarahkan semua lalu lintas ke proxy adalah basis untuk proxy transparan :)
pabouk
Inilah jawaban lain yang benar-benar membantu saya: unix.stackexchange.com/questions/111433/...
Wren T.

Jawaban:

6
sysctl net.ipv4.ip_forward=1 
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080
Alex Antonov
sumber
1
jangan gunakan bold ....
Terima kasih! Saya belum mencoba ini tetapi saya curiga apa yang saya lewatkan adalah perintah penerusan ip. Dan lain kali, silakan gunakan blok kode, tidak tebal.
DankMemes
@AlexAntonov silakan gunakan blok kode. Pilih teks Anda dalam mode edit dan klik ikon kurung.
DankMemes
@ZoveGames, maaf, perbaiki.
Alex Antonov
2
Saya bereksperimen dengan ini. Sysctl ip_forward tidak diperlukan. Namun opsi route_localnet di sini adalah. Saya mengerti sekarang, inilah tepatnya jawaban Juan Cespedes .
Matt Joiner
31

itu bisa dilakukan dengan iptables, tetapi hanya dengan kernel> = 3.6.

Anda harus melakukan:

sysctl -w net.ipv4.conf.all.route_localnet=1
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080

ip_forwardtidak diperlukan, karena paket tidak diteruskan, tetapi jika Anda tidak menyertakan sysctl untuk route_localnet(yang hanya bekerja di kernel> = 3,6), paket tersebut akan dijatuhkan oleh kernel karena menganggapnya "martian", datang dari luar dan memiliki alamat tujuan 127.0.0.1

Juan Cespedes
sumber
Yup, itu berhasil
Nick De Greek
Tidak tahu tentang route_localnet. Jadi sekolah tua dan tidak tahu mengapa ip_forward tidak berfungsi (dicurigai tidak diperlukan tetapi tetap dicoba).
dmourati
1
Pastikan Anda menyimpan net.ipv4.conf.all.route_localnet=1di /etc/sysctl.confjika tidak maka tidak akan gigih dan setelah reboot variabel akan kembali ke 0, menyebabkan paket menjatuhkan. Maka akan sangat sulit untuk mengetahui mengapa sekarang semuanya tidak berfungsi ... itu terjadi pada saya. ;)
yaitu
Maaf untuk necro pertanyaan lama tetapi apakah ada yang setara dengan ipv6 net.ipv4.conf.all.route_localnetuntuk digunakan ip6tables?
Kebian