Sebelum datang ke iptables, itu bukan satu-satunya hal yang Anda butuhkan. Pertama, pada host Anda harus mengaktifkan penerusan IPv4,
echo 1 > /proc/sys/net/ipv4/ip_forward
dan, pada tamu, Anda harus mengatur gateway default,
ip route add default via 192.168.56.1 dev eth0
jika adaptor internal Anda menggunakan subnet 192.168.56.0/24
(default), jika tidak ubahlah sesuai.
Adapun iptables: paket yang datang melalui adaptor internal dan mencoba untuk mencapai internet akan membawa sebagai alamat sumber tamu, yang pada LAN Anda tentu saja tidak ada yang tahu karena itu milik subnet yang berbeda 192.168.56.1
,. Jadi itu tidak akan pernah menerima balasan. Jadi kita membutuhkan iptables
aturan yang akan menulis ulang alamat sumber menjadi milik host, yang dapat dijangkau oleh router / modem / gateway Anda. iptables
itu sendiri akan melacak koneksi sehingga paket balasan akan dikirim dengan benar ke tamu, bukannya ditahan oleh tuan rumah; tidak perlu bagi kita untuk melakukan apa pun.
Kedua iptables
aturan ini akan berfungsi,
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.15
(di atas menyatakan bahwa host memiliki alamat IP 192.168.1.15 dan terhubung ke modem / gateway / router Anda melalui eth0
; jika tidak, ubah sesuai dengan itu). Perbedaan antara kedua pernyataan ini jelas: dengan SNAT Anda harus secara eksplisit menyatakan alamat IP antarmuka, dengan MASQUERADE Anda tidak. Jadi, jika karena alasan apa pun alamat IP antarmuka Anda berubah, aturan dengan SNAT tidak lagi benar, sedangkan yang dengan MASQUERADE (yang memeriksa alamat IP setiap kali digunakan) Anda tidak perlu menyesuaikan aturan. Jelas, MASQUERADE sedikit lebih lambat dari SNAT.
Secara pribadi, saya lebih suka MASQUERADE karena membuat konfigurasi firewall saya portabel, tetapi, seperti yang mereka katakan, YMMV.