Cara mengatur server linux sebagai router

34

Motivasi:

Saya ingin menggunakan server linux saya daripada router nirkabel rata-rata karena beberapa alasan

  1. Saya ingin belajar cara mengatur server yang lebih lengkap di linux
  2. Saya tidak ingin memiliki modem, terhubung ke router, terhubung ke switch jaringan
  3. Saya sakit dan lelah karena harus mencabut router saya setiap 10 hari karena hanya hang
  4. Saya muak dan lelah membeli router hanya untuk menyadari bahwa mereka kehilangan sesuatu yang penting, seperti port forwarding atau ip addressing statis (dhcp)

Mendirikan:

Pada akhirnya, koneksi akan datang ke modem, dan langsung ke server saya melalui eth0, kemudian eth1akan output ke switch jaringan yang semua komputer klien lain akan terhubung ke melalui kabel ethernet (lupakan nirkabel untuk saat ini). Namun, saat ini, saya berada di gedung perkantoran, dan saya memiliki koneksi yang masuk ke modem, yang masuk ke router, yang masuk ke switch jaringan, yang kemudian masuk eth0seperti yang ditentukan di atas.

Tutorial Saat Ini:

Saya melihat beberapa tutorial (tutorial Ubuntu adalah yang terbaik), dan saya telah melihat beberapa pertanyaan router di sini (mis. Yang ini ), tetapi semuanya membahas beberapa konsep utama, seperti:

  • Apa eth1hubungannya dengan eth0? Dalam /etc/network/interfacesapakah saya harus memberitahu eth1untuk menggunakan eth0sebagai network(umumnya itu adalah alamat router fisik yang sebenarnya)?
  • Apakah saya harus melakukan apa pun untuk menginstruksikan eth1untuk mengambil internet yang masuk eth0dan meneruskannya kepada siapa pun yang menginginkannya di switch jaringan?

Pendekatan saat ini:

Ini /etc/network/interfacesfile saya di server:

iface lo inet loopback

auto eth0
   iface eth0 inet static
   address 192.168.1.70
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0
   gateway 192.168.1.1
   dns-nameservers 8.8.8.8

auto eth1
   # iface eth1 inet dhcp
   iface eth1 inet static
   address 192.168.7.0
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0

Dan ifconfigberi tahu saya bahwa kedua NIC berfungsi dengan baik:

eth0      Link encap:Ethernet  HWaddr 20:cf:30:55:a0:5f  
          inet addr:192.168.1.70  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::22cf:30ff:fe55:a05f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11297 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16639 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:948633 (948.6 KB)  TX bytes:1274685 (1.2 MB)

eth1      Link encap:Ethernet  HWaddr 00:11:95:f7:f4:6d  
          inet addr:192.168.7.0  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::211:95ff:fef7:f46d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:243 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3231 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:29934 (29.9 KB)  TX bytes:213055 (213.0 KB)
          Interrupt:21 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:5348 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5348 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:470737 (470.7 KB)  TX bytes:470737 (470.7 KB)

wlan0     Link encap:Ethernet  HWaddr bc:f6:85:f8:70:5c  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Dan inilah yang ada route -n returnsdi server:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.7.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

Kemudian pada klien yang saya miliki

auto lo
iface lo inet loopback
iface eth0 inet dhcp

Tetapi tidak diberi alamat ip.

EDIT: Ini adalah file konfigurasi server isc-dhcp-server /etc/dhcp3/dhcpd.conyang saya salin sebagian besar dari situs ini .

# Sample /etc/dhcpd.conf                                                                                                                                                  
# (add your comments here) 
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.example";

subnet 192.168.7.0 netmask 255.255.255.0 {
   range 192.168.7.10 192.168.7.25;
}  

EDIT: Output darisudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
LOG        all  --  anywhere             anywhere             LOG level warning

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Pertanyaan:

Langkah / komponen penting apa yang saya lewatkan dalam pengaturan ini?

puk
sumber
Apa dhcpd yang Anda gunakan?
TML
@ TML Dari pemahaman saya dhcp(dan dengan demikian dhcpd) tidak wajib, dan hanya dimaksudkan untuk memusatkan semua ips statis di server (sebagai lawan mengubah /etc/network/interfacesfile di setiap host). Karena itu, saya telah memutuskan untuk tidak bereksperimen dengan itu sampai ini berhasil. Namun saya telah dhcp3-servermenginstal, sertaisc-dhcp-server
puk
Jika Anda ingin klien mendapatkan alamat IP dari dhcp, Anda harus menjalankan dhcpd; Anda harus memposting konfigurasi untuk dhcpd mana saja yang saat ini aktif, karena di situlah sumber masalahnya adalah: klien tidak mendapatkan IP. Secara pribadi, saya akan merekomendasikan dnsmasq, karena ia juga membawa beberapa fitur yang berguna untuk melakukan resolusi DNS internal.
TML
@TML Saya menambahkan dhcpd.conffile dan menunjukkan bahwa saya menggunakanisc-dhcp-server
puk
1
Anda harus dua poin lagi: 5. Saya sakit dan lelah karena hanya memiliki sebagian kontrol perangkat. 6. Saya muak dan lelah memiliki router yang berpotensi memiliki backdoor. Poin # 6 adalah hal nyata yang bisa sekarang di router apa pun. Beberapa perute memang datang dengan fitur tambahan seperti kata sandi yang dikodekan keras atau secara diam-diam mendengarkan beberapa port.
Ignas2526

Jawaban:

16

Saya harus pergi seperti Jack the ripper karena beberapa hal hilang yang Anda miliki:

  1. Jika klien Anda akan menggunakan DHCP untuk mendapatkan IP, Anda memerlukan server DHCP.

    iface eth0 inet dhcp

    Di klien ini menunjukkan bahwa mereka akan mendapatkan IP mereka dari server DHCP, jika Anda tidak mengatur server DHCP, Anda harus menggunakan IP tetap atau menginstal server DHCP.

  2. Anda tidak memiliki server DNS yang dikonfigurasi di klien. Baik karena kurangnya server DHCP, atau Anda mungkin ingin menggunakan server DNS lokal untuk semua jaringan Anda.

  3. Anda tidak menawarkan iptablesaturan (keluaran dari sudo iptables -L) tetapi saya bisa menebak bahwa Anda tidak mengaktifkan aturan Masquerade, atau IP forwarding seperti yang dijelaskan .

  4. Alamat IP eth1tidak disarankan. Setiap IP yang diakhiri 0biasanya adalah jaringan itu sendiri, dan sebagian besar router / firewall hanya akan kebingungan ketika ini digunakan . Ubah 192.168.7.1dan Anda sebagian besar akan baik-baik saja.

  5. broadcastNilai Anda di eth1antarmuka tidak benar. Mengirim paket ke mana-mana. Nilai yang benar (dengan mempertimbangkan nilai antarmuka lainnya) adalah 192.168.7.255.

  6. Pilihan Anda di server DHCP ganas. Paket ARP ke router Anda tidak akan pernah mencapai. Inilah yang harus Anda miliki:

    default-lease-time 600;
    max-lease-time 7200;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.7.255;
    option routers 192.168.7.1; ## This should be the same value of the step 4
    option domain-name-servers 8.8.8.8;
    
    subnet 192.168.7.0 netmask 255.255.255.0 {
        range 192.168.7.10 192.168.7.25;
    }

Ikuti ini dan kemungkinan besar Anda akan memiliki router Anda bekerja.

Braiam
sumber
Menambahkan output dari sudo iptables -Lpertanyaan
puk
Bukan untuk pilih-pilih, tetapi untuk kepentingan orang lain yang membaca jawaban ini, dapatkah Anda menjelaskan apa beberapa dari nilai dhcpd.conf ini adalah: baris 4 192.168.7.255dan baris 8subnet 192.168.7.0
puk
@puk yang terlalu rumit untuk dijelaskan dalam komentar, tetapi dengan kata lain, .255adalah alamat broadcast yang biasanya digunakan, paket apa pun yang dikirim ke arah itu akan dikirim ke semua sistem dalam subnet yang sama. Berarti setiap paket yang dikirim ke 1.2.3.255 akan diterima oleh sistem apa pun yang IP-nya mulai dengan 1.2.3 karena semuanya berada dalam subnet yang sama en.wikipedia.org/wiki/Subnetwork#IPv4_subnetting
Braiam
Tidak bekerja Saya ingin melihat apakah masalahnya dhcpatau jaringan. Akan melakukan alamat ip statis untuk menguji. untuk ip statis pada klien, apakah saya menggunakan eth1alamat ip sebagai gateway?
puk
1
Mungkin karena siaran dan jaringan pada eth1 dari router menunjuk ke 192.168.1.x bukannya 192.168.7.x; jika Anda tidak dapat berbicara dari eth1 pada router ke eth0 pada klien, DHCPACK tidak akan pernah sampai pada klien (dan akibatnya tidak akan pernah mendapatkan IP).
TML
9

Braiam menjawab pertanyaan saya, tetapi saya pikir akan sangat membantu untuk melakukan penelusuran menyeluruh di sini. Perbarui ini jika saya melakukan kesalahan.

Pertama make yakin Anda memiliki dua kartu ethernet (NIC) dan memperbarui /etc/network/interfacesberkas seperti itu (jangan tidak kesalahan ini untuk /etc/networksfile).

iface lo inet loopback                                                                                                                    

auto eth0
   iface eth0 inet static
   address 192.168.1.70
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0
   gateway 192.168.1.1
   dns-nameservers 8.8.8.8

auto eth1
   iface eth1 inet static
   address 192.168.7.1
   netmask 255.255.255.0
   broadcast 192.168.7.255
   network 192.168.1.0

Untuk menemukan Anda gateway, broadcastdan network, ikuti instruksi ini .

Selanjutnya, masuk ke klien dan edit file /etc/network/interface(sekali lagi, bukan /etc/networks ) untuk ip statis terlebih dahulu, untuk memastikan bahwa setidaknya kartu NIC berfungsi.

iface eth0 inet static
address 192.168.7.75
netmask 255.255.255.0
network 192.168.7.0
broadcast 192.168.7.255
gateway 192.168.7.1

Ubah nilai agar sesuai dengan nilai di atas. Jika berhasil, besar, kemudian gunakan petunjuk di sini tapi mengikuti mereka persis , karena ada beberapa dhcpfile sehingga jangan kesalahan folder /etc/dhcpdengan /etc/dhcp3dan sebagainya.

puk
sumber