Cách thiết lập máy chủ linux làm bộ định tuyến


34

Động lực:

Tôi muốn sử dụng máy chủ linux của mình thay vì bộ định tuyến không dây trung bình vì nhiều lý do

  1. Tôi muốn tìm hiểu cách thiết lập một máy chủ hoàn chỉnh hơn trên linux
  2. Tôi không muốn có modem, được kết nối với bộ định tuyến, được kết nối với bộ chuyển đổi mạng
  3. Tôi bị bệnh và mệt mỏi vì phải rút phích cắm bộ định tuyến của mình cứ sau 10 ngày vì nó chỉ bị treo
  4. Tôi phát ốm và mệt mỏi khi chỉ mua các bộ định tuyến để nhận ra rằng họ đang thiếu thứ gì đó rất quan trọng, như chuyển tiếp cổng hoặc địa chỉ ip tĩnh (dhcp)

Thiết lập:

Cuối cùng, kết nối sẽ đi vào modem và đi thẳng vào máy chủ của tôi thông qua eth0, sau đó eth1sẽ xuất ra một bộ chuyển đổi mạng mà tất cả các máy khách khác sẽ kết nối qua cáp ethernet (tạm thời không dây). Tuy nhiên, hiện tại, tôi đang ở trong một tòa nhà văn phòng và tôi có kết nối đến một modem, đi vào một bộ định tuyến, đi vào một bộ chuyển đổi mạng, sau đó đi vào eth0như được chỉ định ở trên.

Hướng dẫn hiện tại:

Tôi đã xem một số hướng dẫn (hướng dẫn Ubuntu là câu hỏi hay nhất) và tôi đã xem xét một số câu hỏi về bộ định tuyến ở đây (ví dụ: câu hỏi này ), nhưng tất cả chúng đều tập trung vào một số khái niệm chính, như:

  • Là gì eth1's liên quan đến eth0? Trong /etc/network/interfacestôi phải nói eth1để sử dụng eth0như network(nói chung nó là địa chỉ Router vật lý thực tế)?
  • Tôi có phải làm bất cứ điều gì để hướng dẫn eth1lấy internet đi vào eth0và chuyển nó cho bất cứ ai muốn nó trong mạng chuyển đổi không?

Phương cách hiện hành:

Đây là /etc/network/interfacestập tin của tôi trên máy chủ:

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

ifconfignói với tôi rằng cả hai NIC đều hoạt động tốt:

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)

Và đây là những gì route -n returnstrên máy chủ:

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

Sau đó, trên khách hàng tôi có

auto lo
iface lo inet loopback
iface eth0 inet dhcp

Nhưng nó không được chỉ định một địa chỉ IP.

EDIT: Đây là tệp cấu hình máy chủ isc-dhcp /etc/dhcp3/dhcpd.conmà tôi đã sao chép hầu hết từ trang web này .

# 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: Đầu ra củasudo 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         

Câu hỏi:

Những bước / thành phần quan trọng nào tôi bị thiếu trong thiết lập này?


Bạn đang sử dụng dhcpd nào?
TML

@TML Theo hiểu biết của tôi dhcp(và do đó dhcpd) là không bắt buộc và chỉ có nghĩa là tập trung tất cả các ips tĩnh tại máy chủ (trái ngược với việc thay đổi /etc/network/interfacestệp trong mỗi máy chủ). Do đó, tôi đã quyết định không thử nghiệm điều đó cho đến khi điều này hoạt động. Tuy nhiên tôi đã dhcp3-servercài đặt, cũng nhưisc-dhcp-server
puk

Nếu bạn muốn khách hàng nhận được địa chỉ IP từ dhcp, bạn cần chạy dhcpd; bạn nên đăng cấu hình cho bất kỳ dhcpd nào hiện đang hoạt động, vì đó là nguồn gốc của vấn đề sẽ là: khách hàng không nhận được IP. Cá nhân, tôi muốn giới thiệu dnsmasq, vì nó cũng mang theo một số tính năng hữu ích để thực hiện phân giải DNS nội bộ.
TML

@TML Tôi đã thêm dhcpd.conftệp và cho biết rằng tôi đang sử dụngisc-dhcp-server
puk

1
Bạn nên thêm hai điểm: 5. Tôi phát ốm và mệt mỏi khi chỉ kiểm soát một phần thiết bị. 6. Tôi phát ốm và mệt mỏi vì có một bộ định tuyến có khả năng có cửa hậu. Điểm # 6 là một điều thực sự có thể có ngay bây giờ trong bất kỳ bộ định tuyến. Một số bộ định tuyến đi kèm với các tính năng bổ sung như mật khẩu được mã hóa cứng hoặc bí mật lắng nghe một số cổng.
Ignas2526

Câu trả lời:


16

Tôi phải đi như Jack the ripper do một số thứ còn thiếu mà bạn có:

  1. Nếu khách hàng của bạn sẽ sử dụng DHCP để nhận IP, bạn cần có máy chủ DHCP.

    iface eth0 inet dhcp

    Trong các máy khách, điều này cho biết rằng họ sẽ lấy IP của họ từ máy chủ DHCP, nếu bạn không thiết lập máy chủ DHCP, bạn nên sử dụng IP cố định hoặc cài đặt máy chủ DHCP.

  2. Bạn thiếu máy chủ DNS được cấu hình trong các máy khách. Do thiếu máy chủ DHCP hoặc bạn có thể muốn sử dụng máy chủ DNS cục bộ cho tất cả mạng của mình.

  3. Bạn đã không đưa ra các iptablesquy tắc (đầu ra của sudo iptables -L) nhưng tôi có thể đoán rằng bạn đã không kích hoạt các quy tắc Giả trang, cũng như chuyển tiếp IP như được mô tả .

  4. Địa chỉ IP của eth1không được khuyến khích. Bất kỳ IP nào kết thúc 0thường là chính mạng và hầu hết các bộ định tuyến / tường lửa chỉ bị lẫn lộn khi chúng được sử dụng . Thay đổi nó 192.168.7.1và bạn sẽ ổn thôi.

  5. broadcastGiá trị của bạn trong eth1giao diện là không chính xác. Đang gửi các gói đến hư không. Giá trị chính xác (có tính đến các giá trị khác của giao diện) là 192.168.7.255.

  6. Tùy chọn của bạn trong máy chủ DHCP là luẩn quẩn. Các gói ARP đến bộ định tuyến của bạn sẽ không bao giờ đạt được. Đây là những gì bạn nên có:

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

Thực hiện theo những điều này và rất có thể bạn sẽ có bộ định tuyến của bạn làm việc.


Đã thêm đầu ra của sudo iptables -Lcâu hỏi
puk

Không kén chọn, nhưng vì lợi ích của bất kỳ ai khác khi đọc câu trả lời này, bạn có thể giải thích một số giá trị dhcpd.conf này là gì không: dòng 4 192.168.7.255và dòng 8subnet 192.168.7.0
puk

@puk quá phức tạp để giải thích trong các bình luận, nhưng để nói một cách độc đáo, .255là địa chỉ quảng bá được sử dụng thông thường, mọi gói được gửi theo hướng đó sẽ được gửi đến tất cả các hệ thống trong cùng một mạng con. Có nghĩa là bất kỳ gói nào được gửi tới 1.2.3.255, nó sẽ được nhận bởi bất kỳ hệ thống nào có IP bắt đầu bằng 1.2.3 vì tất cả chúng đều nằm trong cùng một mạng con en.wikipedia.org/wiki/Subnetwork#IPv4_subnetting
Braiam

Không làm việc. Tôi muốn xem nếu vấn đề là dhcphoặc mạng. Sẽ làm một địa chỉ IP tĩnh để kiểm tra. Đối với ip tĩnh trên máy khách, tôi có sử dụng eth1địa chỉ IP làm cổng không?
puk

1
Có lẽ vì quảng bá và mạng trên eth1 của bộ định tuyến đang trỏ đến 192.168.1.x thay vì 192.168.7.x; nếu bạn không thể nói từ eth1 trên bộ định tuyến đến eth0 trên máy khách, DHCPACK sẽ không bao giờ đến máy khách (và do đó sẽ không bao giờ có được IP).
TML

9

Braiam đã trả lời câu hỏi của tôi, nhưng tôi nghĩ sẽ rất hữu ích khi đặt một hướng dẫn kỹ lưỡng ở đây. Hãy cập nhật điều này nếu tôi có bất kỳ sai lầm.

Trước tiên hãy chắc chắn rằng bạn có hai card ethernet (NIC) và cập nhật các /etc/network/interfacestập tin như vậy (đừng không nhầm lẫn này cho /etc/networkstập tin).

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

Để tìm của bạn gateway, broadcastnetwork, làm theo các hướng dẫn sau .

Tiếp theo, đi vào máy khách và chỉnh sửa tệp /etc/network/interface(một lần nữa, không phải /etc/networks ) cho ip tĩnh trước, để đảm bảo rằng ít nhất thẻ NIC đang hoạt động.

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

Thay đổi các giá trị để phù hợp với các giá trị trên. Nếu nó hoạt động, thật tuyệt, sau đó sử dụng các hướng dẫn ở đây nhưng làm theo chính xác , vì có một số dhcptệp vì vậy đừng nhầm thư mục /etc/dhcpvới /etc/dhcp3và cứ thế.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.