Bagaimana saya bisa mengatur kotak linux saya sebagai router untuk meneruskan paket ip?

25

Saya sedang melakukan percobaan jaringan tentang penerusan paket ip, tetapi saya tidak tahu mengapa itu berhasil.

Saya memiliki mesin linux dengan dua antarmuka jaringan, eth0 dan eth1 keduanya dengan alamat IP statis (eth0: 192.168.100.1, eth1: 192.168.101.2).

Tujuan saya sederhana, saya hanya ingin meneruskan paket ip dari eth1 dengan tujuan di subnet 192.168.100.0/24 ke eth0, dan meneruskan paket ip dari eth0 dengan tujuan di subnet 192.168.101.0/24 ke eth1.

Saya menyalakan ip forwarding dengan:

sysctl -w net.ipv4.ip_forward=1

tabel perutean saya seperti ini:

# route -n
Kernel IP routing table
Destination     Gateway     Genmask        Flags Metric Ref   Use  Iface
192.168.100.0   0.0.0.0     255.255.255.0  U     0      0       0  eth0
192.168.101.0   0.0.0.0     255.255.255.0  U     0      0       0  eth1

Tetapi, ketika saya mencoba melakukan ping dari 192.168.100.25 ke 192.168.101.47, itu tidak berhasil.

Yishu Fang
sumber

Jawaban:

23

Anda perlu menambahkan aturan penerusan menggunakan iptablesperintah, sesuatu seperti ini:

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT

lihat man iptableslebih detail, atau cari di internet untuk artikel-artikel howto, misalnya Cara mengatur router NAT di komputer berbasis Linux

Berikut ini adalah Linux IP Masquerade HOWTO yang membahas topik secara lebih rinci.

Anda juga harus memastikan bahwa Anda tidak memiliki aturan lain (misalnya dalam FORWARDrantai) yang mengesampingkan ACCEPTaturan di atas . Jika ada, Anda mungkin ingin menghapusnya.

Sergey
sumber
Saya tidak tahu mengapa, tetapi masih tidak berhasil. Saya telah menambahkan keduanya iptables -A FORWARD -i eth0 -o eth1 -j ACCEPTdan iptables -A FORWARD -i eth1 -o eth0 -j ACCEPTke meja saya. Dan kebijakan INPUT, OUTPUT, dan FORWARD saya semuanya ACCEPT.
Yishu Fang
Ada banyak hal yang dapat dikonfigurasi salah. Misalnya, IP host Anda harus ditetapkan sebagai "IP gateway" pada host di jaringan "internal", sehingga mereka tahu bahwa jika IP tidak berada dalam jangkauan jaringan "lokal" mereka, paket-paket tersebut perlu dikirim ke Anda mesin gateway. Ini mirip dengan pengaturan yang biasa di mana router ADSL terdaftar sebagai gateway untuk host di LAN
Sergey
Ketika saya gunakan traceroutedi host saya, itu menunjukkan bahwa paket tersebut pergi ke "router" (192.168.100.1), tetapi tidak melangkah lebih jauh.
Yishu Fang
1
@UniMouS: Sepertinya saya sudah lupa tentang hal MASQUERADE - Saya sudah mengedit jawaban saya dan menambahkan tautan baru ke artikel.
Sergey
2

Anda perlu menambahkan rute ke 192.168.100.25 dan 192.168.101.47.

Jika server penerusan Anda memiliki IP 192.168.100.1 dan 192.168.101.1 Anda akan menambahkan klien 192.168.100.25

ip route 192.168.101.0/24 via 192.1268.100.1

dan di klien 192.168.101.47

ip route 192.168.100.0/24 via 192.168.101.1

(Ini berfungsi hanya dengan penerusan yang diaktifkan, tanpa iptables).

V. Campos
sumber