วิธีการตั้งค่าเซิร์ฟเวอร์ linux เป็นเราเตอร์


34

แรงจูงใจ:

ฉันต้องการใช้เซิร์ฟเวอร์ linux แทนเราเตอร์ไร้สายโดยเฉลี่ยด้วยเหตุผลหลายประการ

  1. ฉันต้องการเรียนรู้วิธีตั้งค่าเซิร์ฟเวอร์ที่สมบูรณ์ยิ่งขึ้นบน linux
  2. ฉันไม่ต้องการมีโมเด็มเชื่อมต่อกับเราเตอร์เชื่อมต่อกับสวิตช์เครือข่าย
  3. ฉันป่วยและเบื่อที่จะต้องถอดปลั๊กเราเตอร์ของฉันทุก ๆ 10 วันเพราะมันแค่แฮงค์
  4. ฉันป่วยและเบื่อที่จะซื้อเราเตอร์เพื่อรู้ว่าพวกเขาขาดสิ่งสำคัญเช่นการส่งต่อพอร์ตหรือที่อยู่ ip แบบคงที่ (dhcp)

ติดตั้ง:

ในที่สุดการเชื่อมต่อจะเข้าสู่โมเด็มและส่งตรงไปยังเซิร์ฟเวอร์ของฉันeth0จากนั้นeth1จะส่งออกไปยังสวิตช์เครือข่ายซึ่งคอมพิวเตอร์ไคลเอนต์อื่น ๆ ทั้งหมดจะเชื่อมต่อผ่านสายอีเธอร์เน็ต (ลืมไร้สายสักครู่) อย่างไรก็ตามในปัจจุบันฉันอยู่ในอาคารสำนักงานและฉันมีการเชื่อมต่อเข้ามาในโมเด็มซึ่งเข้าสู่เราเตอร์ซึ่งจะเข้าสู่สวิตช์เครือข่ายซึ่งจะไปeth0ตามที่ระบุข้างต้น

บทแนะนำปัจจุบัน:

ฉันดูบทเรียนบางส่วน (บทช่วยสอนของUbuntuเป็นคำถามที่ดีที่สุด) และฉันได้ดูคำถามเราเตอร์บางส่วนที่นี่ (นั่นคือคำถามนี้ ) แต่พวกเขาทั้งหมดมองข้ามแนวคิดหลักหลายประการเช่น:

  • คืออะไรeth1's ความสัมพันธ์กับeth0? ใน/etc/network/interfacesฉันจะต้องบอกeth1ที่จะใช้eth0เป็นnetwork(โดยทั่วไปก็เป็นจริงที่อยู่เราเตอร์กายภาพ)?
  • ฉันต้องทำอะไรเพื่อสั่งeth1ให้ใช้อินเทอร์เน็ตที่เข้ามาeth0และส่งต่อไปยังใครก็ตามที่ต้องการในสวิตช์เครือข่ายหรือไม่?

แนวทางปัจจุบัน:

นี่คือ/etc/network/interfacesไฟล์ของฉันบนเซิร์ฟเวอร์:

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

และifconfigบอกฉันว่านิคส์ทั้งสองทำงานได้ดี:

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)

และนี่คือสิ่งที่route -n returnsอยู่บนเซิร์ฟเวอร์:

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

จากนั้นเมื่อลูกค้าฉันมี

auto lo
iface lo inet loopback
iface eth0 inet dhcp

แต่มันไม่ได้ถูกกำหนดที่อยู่ IP

แก้ไข:นี่คือไฟล์กำหนดค่า isc-dhcp-server /etc/dhcp3/dhcpd.conซึ่งฉันส่วนใหญ่คัดลอกมาจากเว็บไซต์นี้

# 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;
}  

แก้ไข:ผลผลิตจากsudo 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         

คำถาม:

ฉันขาดขั้นตอน / ส่วนประกอบสำคัญใดในการตั้งค่านี้


คุณกำลังใช้ dhcpd อะไรอยู่
TML

@TML จากความเข้าใจของฉันdhcp(และดังนั้นdhcpd) ไม่ได้บังคับและมีความหมายเฉพาะสำหรับการรวมศูนย์ ips แบบคงที่ทั้งหมดที่เซิร์ฟเวอร์ (ตรงข้ามกับการเปลี่ยน/etc/network/interfacesไฟล์ในทุกโฮสต์) ดังนั้นฉันจึงตัดสินใจที่จะไม่ทดลองจนกว่าจะได้ผล ฉันทำอย่างไรก็ตามมีการdhcp3-serverติดตั้งเช่นเดียวกับisc-dhcp-server
puk

หากคุณต้องการให้ไคลเอนต์รับที่อยู่ IP จาก dhcp คุณต้องเรียกใช้ dhcpd คุณควรโพสต์การกำหนดค่าใด ๆ ของ dhcpd เหล่านี้ในขณะนี้ที่ใช้งานอยู่นั่นคือที่ที่แหล่งที่มาของปัญหาจะเป็นอีกครั้ง: ไคลเอนต์ไม่ได้รับ IP โดยส่วนตัวแล้วฉันขอแนะนำ dnsmasq เพราะมันยังมีคุณสมบัติที่มีประโยชน์สำหรับการแก้ปัญหา DNS ภายในอีกด้วย
TML

@TML ฉันเพิ่มdhcpd.confไฟล์และระบุว่าฉันกำลังใช้isc-dhcp-server
puk

1
คุณควรเพิ่มอีกสองจุด: 5. ฉันป่วยและเบื่อที่จะควบคุมอุปกรณ์เพียงบางส่วนเท่านั้น 6. ฉันป่วยและเบื่อที่จะมีเราเตอร์ซึ่งอาจมีแบ็คดอร์ Point # 6 เป็นเรื่องจริงที่สามารถอยู่ในเราเตอร์ได้ เราเตอร์บางตัวมาพร้อมกับคุณสมบัติพิเศษเช่นรหัสผ่านที่กำหนดรหัสยากหรือแอบฟังพอร์ตบางตัว
Ignas2526

คำตอบ:


16

ฉันต้องไปเหมือนแจ็คเดอะริปเปอร์เนื่องจากมีหลายสิ่งที่คุณขาดไป:

  1. หากลูกค้าของคุณจะใช้ DHCP เพื่อรับ IP คุณต้องมีเซิร์ฟเวอร์ DHCP

    iface eth0 inet dhcp

    ในไคลเอนต์นี้บ่งชี้ว่าพวกเขาจะได้รับ IP ของพวกเขาจากเซิร์ฟเวอร์ DHCP ถ้าคุณไม่ได้ตั้งค่าเซิร์ฟเวอร์ DHCP คุณควรใช้ IP คงที่หรือติดตั้งเซิร์ฟเวอร์ DHCP

  2. คุณไม่มีเซิร์ฟเวอร์ DNS ที่กำหนดค่าในไคลเอนต์ อาจเนื่องมาจากการขาดเซิร์ฟเวอร์ DHCP หรือคุณอาจต้องการใช้เซิร์ฟเวอร์ DNS ท้องถิ่นสำหรับเครือข่ายของคุณทั้งหมด

  3. คุณไม่ได้เสนอiptablesกฎ (การส่งออกของsudo iptables -L) แต่ฉันสามารถคาดเดาว่าคุณไม่ได้เปิดใช้งานกฎปลอมหรือการส่งต่อ IP ตามที่อธิบายไว้

  4. eth1ไม่แนะนำที่อยู่ IP ของ IP ใด ๆ จบลง0โดยทั่วไปจะมีเครือข่ายของตัวเองและเราเตอร์มากที่สุดไฟร์วอลล์ / เพิ่งได้รับสับสนเมื่อเหล่านี้จะใช้ เปลี่ยนเป็น192.168.7.1และคุณจะดีที่สุด

  5. broadcastค่าของคุณในeth1อินเทอร์เฟซไม่ถูกต้อง กำลังส่งพัสดุไปที่อื่น ค่าที่ถูกต้อง (คำนึงถึงค่าอื่น ๆ ของอินเตอร์เฟซ) 192.168.7.255จะ

  6. ตัวเลือกของคุณในเซิร์ฟเวอร์ DHCP นั้นชั่วร้าย แพ็คเกจ ARP สำหรับเราเตอร์ของคุณจะไม่ถึง นี่คือสิ่งที่คุณควรมี:

    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;
    }

ทำตามสิ่งเหล่านี้และเป็นไปได้มากที่สุดว่าคุณจะทำให้เราเตอร์ทำงานได้


เพิ่มผลลัพธ์ของsudo iptables -Lคำถาม
puk

ที่จะไม่จู้จี้จุกจิก แต่สำหรับผลประโยชน์ของคนใดคนหนึ่งอื่นอ่านคำตอบนี้คุณสามารถอธิบายสิ่งที่บางส่วนของค่า dhcpd.conf เหล่านี้คือ: สาย 4 192.168.7.255และสาย 8subnet 192.168.7.0
ปึก

@puk ที่ซับซ้อนเกินกว่าที่จะอธิบายในความคิดเห็น แต่ที่จะกล่าวอย่างชัดเจน.255คือที่อยู่ที่ใช้ออกอากาศปกติแพ็คเกจใด ๆ ที่ส่งไปในทิศทางนั้นจะถูกส่งไปยังระบบทั้งหมดในเครือข่ายย่อยเดียวกัน หมายความว่าแพคเกจใด ๆ ที่ส่งไปยัง 1.2.3.255 จะได้รับโดยระบบใด ๆ ที่ IP เริ่มต้นด้วย 1.2.3 เนื่องจากทั้งหมดอยู่ในเครือข่ายย่อยเดียวกันen.wikipedia.org/wiki/Subnetwork#IPv4_subnetting
Braiam

ไม่ทำงาน. ฉันต้องการดูว่ามีปัญหาdhcpหรือเครือข่าย จะทำที่อยู่ ip แบบคงที่เพื่อทดสอบ สำหรับ ip แบบคงที่บนไคลเอนต์ฉันจะใช้eth1ที่อยู่ IP เป็นเกตเวย์หรือไม่
puk

1
อาจเป็นเพราะการออกอากาศและเครือข่ายบน eth1 ของเราเตอร์ชี้ไปที่ 192.168.1.x แทนที่จะเป็น 192.168.7.x หากคุณไม่สามารถพูดคุยจาก eth1 บนเราเตอร์ถึง eth0 บนไคลเอนต์ DHCPACKs จะไม่มาถึงไคลเอนต์ (และจะไม่ได้รับ IP)
TML

9

Braiam ตอบคำถามของฉัน แต่ฉันคิดว่ามันจะมีประโยชน์ถ้าจะใส่คำแนะนำแบบละเอียดที่นี่ โปรดอัปเดตสิ่งนี้หากฉันทำผิดพลาด

ทำครั้งแรกแน่ใจว่าคุณมีสองบัตรอีเธอร์เน็ต (NICs) และอัพเดต/etc/network/interfacesไฟล์ดังกล่าว (ไม่ได้ผิดพลาดนี้สำหรับ/etc/networksไฟล์)

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

เพื่อหาข้อมูลของคุณgateway, broadcastและnetworkทำตามคำแนะนำเหล่านี้

จากนั้นไปที่ไคลเอนต์และแก้ไขไฟล์/etc/network/interface(อีกครั้งไม่ใช่ /etc/networks ) สำหรับสแตติก ip ก่อนเพื่อให้แน่ใจว่าอย่างน้อยการ์ด NIC ทำงาน

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

เปลี่ยนค่าเพื่อให้ตรงกับค่าข้างต้น หากการทำงานที่ดีจากนั้นใช้คำแนะนำที่นี่แต่ปฏิบัติตามพวกเขาว่าเป็นมีหลายdhcpไฟล์จึงไม่ผิดพลาดโฟลเดอร์/etc/dhcpที่มี/etc/dhcp3และอื่น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.