Máy chủ cho FreeBSD. Cài đặt và cấu hình mạng

Phân phối Fryukhi thường được coi là phù hợp nhất để giải quyết các vấn đề mạng ứng dụng trong mạng nội bộ. Hôm nay chúng ta sẽ giải quyết một trong những vấn đề về mạng - thiết lập một cổng trên Freebsd 10 để truy cập Internet từ khu vực cục bộ. Đây là một chức năng máy chủ đơn giản, phổ biến và được ưa chuộng, có thể được mở rộng với các tính năng bổ sung.

Chúng tôi sẽ sử dụng phiên bản tiếp theo hệ thống để giải quyết vấn đề thiết lập cổng:

# uname -v FreeBSD 10.2-RELEASE-p8 #0 r292756M: Thứ bảy ngày 26 tháng 12 22:49:34 MSK 2015 root@freebsd:/usr/obj/usr/src/sys/GENERIC

Server có cài đặt 2 card mạng:

  • hn0— giao diện bên ngoài, nhận Internet từ nhà cung cấp, cài đặt qua dhcp
  • hn1— mạng cục bộ, địa chỉ 10.20.30.1, được đặt thủ công

Đối với nhiệm vụ thiết lập của chúng tôi phần mềm freebsd Router sẽ bao gồm việc thiết lập định tuyến trên máy chủ, cài đặt và cấu hình ipfw, bật nat, cấu hình dhcp địa phương và máy chủ DNS.

Chuẩn bị máy chủ để cấu hình cổng

Thông tin về hợp đồng thuê dhcp đã phát hành của máy chủ dnsmasq có thể được xem trong tệp /var/db/dnsmasq.lease.

Phân tích hoạt động mạng trong freebsd bằng iftop

Đôi khi bạn muốn xem điều gì đang xảy ra trên bộ định tuyến và ai đang sử dụng Internet ở khoảnh khắc này. Theo mặc định, hệ thống không có sẵn công cụ để lấy thông tin này. Sẽ đến hỗ trợ chúng tôi chương trình đơn giản iftop, cho phép bạn xem hoạt động trên giao diện mạng trong thời gian thực.

Cài đặt iftopđến cổng Freebsd được định cấu hình:

# pkg cài đặt iftop

Chúng ta khởi chạy iftop cho biết giao diện và hiển thị các cổng được sử dụng:

# iftop -i hn1 -P

Chúng ta thấy một bức tranh thú vị - ai đang leo ở đâu, qua cảng nào và với tốc độ bao nhiêu.

Ví dụ: tôi đã khởi chạy trình tạo lưu lượng truy cập Internet trên một trong các máy tính. Nó chiếm gần như toàn bộ kênh và điều này hiển thị rõ ràng trên bộ định tuyến bằng iftop. Tất nhiên cái này tiện ích đơn giản không giải quyết được mọi vấn đề giám sát hoạt động mạng, nhưng việc trình bày ảnh hiện tại cũng tốt nếu bạn không cần thêm gì nữa.

Phần kết luận

Hãy tóm tắt những gì chúng tôi đã làm. Phía sau một khoảng thời gian ngắn Chúng tôi đã định cấu hình một cổng chính thức (về cơ bản là bộ định tuyến phần mềm) dựa trên Freebsd 10 để cung cấp quyền truy cập Internet cho các máy khách phía sau máy chủ. Đồng thời chúng tôi đã cung cấp nhận tự động cài đặt. Ngay cả ở mức độ khiêm tốn máy chủ ảo một cổng như vậy có khả năng xử lý khá nhiều lưu lượng.

Toàn bộ quá trình thiết lập chỉ mất khoảng 10-15 phút. Hầu hết thời gian được dành cho việc lắp ráp kernel. Cao hơn Phiên bản miễn phí, thời gian lắp ráp càng lâu, mặc dù tốc độ của sắt tăng lên đáng kể.

Chúng ta hãy điểm qua các điểm và tìm hiểu chính xác những gì chúng tôi đã làm:

  1. Chúng tôi đã chuẩn bị máy chủ để định cấu hình cổng.
  2. Chúng tôi đã xây dựng lại kernel với các thông số cần thiết.
  3. Chúng tôi đã định cấu hình ipfw và nat và kích hoạt định tuyến.
  4. Đã cài đặt và định cấu hình dnsmasq để phân phối cài đặt mạng qua máy chủ dhcp và dns.
  5. Chúng tôi đã cài đặt iftop để phân tích đơn giản hoạt động mạng trên giao diện bên ngoài.

Điều này là đủ cho công việc đầy đủ cổng trên Freebsd 10. Nếu có nhu cầu đếm lưu lượng người dùng hoặc hạn chế quyền truy cập vào một số tài nguyên nhất định, bạn có thể sử dụng nó.

Trong bối cảnh hướng dẫn này chúng tôi sẽ xem xét việc đánh địa chỉ IPv4. Cài đặt địa chỉ IP được thực hiện thông qua tệp RC.conf và trong đó chúng tôi chỉ định cả địa chỉ IP tĩnh và trong trường hợp sử dụng DHCP, cho biết nhu cầu sử dụng địa chỉ động.

Trước tiên, hãy xác định giao diện mạng nào được sử dụng trên máy, chúng ta sẽ thực hiện việc này bằng lệnh ifconfig.

Ảnh chụp màn hình hiển thị kết quả thực hiện lệnh ifconfig. Trên đó chúng ta có thể thấy một card mạng có tên em0, cũng như giao diện loopback ảo lo0. Tên của giao diện mạng tùy thuộc vào nhà sản xuất (Ví dụ: đối với card mạng Realtek nó sẽ re, mình có em nó là card mạng Intel tích hợp). Trong trường hợp của chúng tôi, chúng tôi thấy giao diện mạng của mình có địa chỉ được chỉ định 192.168.2.6. Mặt nạ mạng được viết bằng hệ thập lục phân

Thiết lập địa chỉ IP tĩnh.

Giả sử tôi muốn thay đổi địa chỉ IP mà không cần khởi động lại máy. Điều này có thể được thực hiện bằng một lệnh thông qua shell. Theo đó, địa chỉ này sẽ thay đổi sau khi khởi động lại, vì Tất cả cài đặt khi khởi động được lấy từ tệp /etc/rc.conf và hiện tại chúng tôi sẽ không thêm bất cứ thứ gì vào đó.

Ví dụ: tôi muốn thay đổi địa chỉ thành 192.168.2.78. Có hai tùy chọn để viết lệnh, cả hai đều đúng -

Ifconfig em0 192.168.2.78 mặt nạ mạng 255.255.255.0

Ifconfig em0 192.168.2.78/24

Cả hai lệnh sẽ thay đổi địa chỉ IP, sự khác biệt nằm ở định dạng ghi, trong trường hợp thứ hai, chúng tôi chỉ ra mạng con thứ 24, tương ứng với mặt nạ mạng 255.255.255.0. Để làm được điều này địa chỉ tĩnh trở thành vĩnh viễn (cho dù âm thanh có vẻ hỗn loạn đến đâu, theo nghĩa là nó vẫn được giữ nguyên sau khi khởi động lại). Chúng ta cần thêm một mục vào /etc/rc.conf

Bạn cũng có thể chỉ định mặt nạ mạng con theo hai cách:

Ifconfig_em0="192.168.2.78 mặt nạ mạng 255.255.255.0"

Ifconfig_em0="192.168.2.78/24"

Sau khi khởi động lại, máy chủ của bạn sẽ gán cho giao diện em0 một địa chỉ IP là 192.168.2.78 và mặt nạ là 255.255.255.0

Lấy địa chỉ động từ DHCP

TRONG trong trường hợp này Ngoài ra còn có hai cách, cách thứ nhất là tạm thời (cho đến khi khởi động lại), cách thứ hai là vĩnh viễn, tức là nhận địa chỉ mỗi lần sau khi khởi động lại.

Theo đó, đối với đường dẫn đầu tiên chúng ta chỉ cần nhập lệnh

Dhclient em0 Đối với đường dẫn thứ hai, thêm một dòng vào RC.conf

Ifconfig_em0="DHCP"

Đặt cổng mặc định.

Để đặt cổng mặc định, hãy chỉnh sửa tệp /etc/rc.conf, thêm hoặc thay đổi dòng -

Bộ định tuyến mặc định="192.168.2.254"

Điều này cũng có thể được thực hiện bằng các lệnh - tuyến xóa tuyến mặc định thêm tuyến mặc định 192.168.2.254

Thiết lập máy chủ DNS

Để chỉ định máy chủ DNS (ví dụ: chúng tôi muốn cài đặt DNS công cộng của Google), hãy mở tệp /etc/resolv.conf để chỉnh sửa và ghi - nameserver 8.8.8.8 nameserver 8.8.4.4

Xin chào. Hãy xem xét một trong những cách cài đặt mạng cho FreeBSD 8 trên một máy ảo. Chương trình được sử dụng như một trình giả lập máy ảo Hộp ảođược cài đặt trên Windows 8, các cài đặt cho Windows 7 cũng tương tự, nếu cần, bạn có thể điều hướng trong quá trình thực hiện.
Chúng tôi bắt đầu từ thời điểm FreeBSD được cài đặt trên máy ảo, và bây giờ là lúc thiết lập mạng cho công việc tiếp theo. Quá trình thiết lập sẽ được thực hiện theo ba giai đoạn: thiết lập hệ điều hành cơ sở (windows 8), thiết lập Chương trình ảo Hộp, thiết lập FreeBSD.

1. Trước hết, hãy kiểm tra xem tường lửa đã được bật chưa.
Bảng điều khiển > Tường lửa Windows> Định cấu hình cài đặt

Theo mặc định, tường lửa được bật trên hệ thống; nếu bạn đã tắt nó, bạn nên kích hoạt nó. Sau khi kích hoạt tường lửa, hãy khởi động lại máy tính của bạn.


Bảng điều khiển> Tường lửa Windows> Chương trình được phép


Sau khi cài đặt chương trình Virtual Box, bạn sẽ thấy bộ điều hợp ảo giả lập.

3. Hãy ghi lại cài đặt máy chủ máy ảo.
Bảng điều khiển > Mạng và Internet > Kết nối mạng> Mạng chỉ dành cho máy chủ VirtualBox


Do đó, máy chủ này sẽ đóng vai trò là cổng cho FreeBSD, nơi mạng sẽ được chuyển tiếp từ bộ điều hợp vật lý.

4. Định cấu hình chuyển tiếp mạng từ bộ điều hợp vật lý sang bộ điều hợp ảo (Hộp ảo).
Chuyển đến thuộc tính của bộ điều hợp vật lý, tab “Truy cập”. Ở đây bạn cần đánh dấu vào ô “ Cho phép người dùng mạng khác sử dụng kết nối Internet của máy tính này", hãy chọn máy chủ Hộp ảo bên dưới.

Bây giờ bạn cần phải vô hiệu hóa DHCP server trong cài đặt Hộp ảo.
5. Vô hiệu hóa DHCP trong Hộp ảo
Đi đến Cài đặt ảo Box, trong trình quản lý máy ảo, hãy vào menu chính Tệp > Cài đặt, cửa sổ cài đặt sẽ mở ra, chuyển đến tab “Mạng”.

Mở cài đặt mạng máy chủ, trên tab “Máy chủ DHCP”, bỏ chọn tùy chọn “Bật máy chủ” và lưu cài đặt.

Bây giờ hãy bắt đầu thiết lập mạng trong FreeBSD. Chúng tôi khởi động máy ảo với hệ thống được cài đặt FreeBSD, đăng nhập vào hệ thống.

6. Xác định tên bộ điều hợp mạng BSD miễn phí.
Nhập lệnh trong bảng điều khiển:

#ifconfig

Bảng điều khiển sẽ hiển thị các bộ điều hợp có sẵn.


Chúng tôi cần một bộ chuyển đổi em0, chúng tôi sẽ cấu hình nó.

7. Đặt tham số cho bộ điều hợp em0 trong tệp “rc.conf”.
để chỉnh sửa:

#ee /etc/rc.conf

Đặt các thông số:

Ifconfig_em0="inet 192.168.2.10 netmask 255.255.255.0" defaultrouter="192.168.2.1" tên máy chủ="localhost"


Chúng ta nhấn phím “ESC”, menu soạn thảo xuất hiện, chọn “rời khỏi trình soạn thảo”, sau đó “lưu thay đổi”, như vậy chúng ta đã lưu những thay đổi mình đã thực hiện. Bây giờ bạn cần đăng ký cài đặt trong tệp resolv.conf

8. Chúng tôi viết các cài đặt trong tệp resolv.conf
Mở tập tin cấu hình:

Ee /etc/resolv.conf

Thêm dòng:

Máy chủ tên 192.168.2.1


Lưu các thay đổi. Khởi động lại FreeBSD, lệnh khởi động lại:

Sau khi khởi động lại, chúng tôi đăng nhập và thử thực hiện.
Ví dụ:

#ping google.kz


Chúng tôi đảm bảo rằng mạng đang hoạt động. Đó là tất cả cho bây giờ. Điều đáng lưu ý là phương pháp nàyĐây chỉ là một trong nhiều tùy chọn để thiết lập mạng của bạn. Liệu nó có phù hợp với bạn hay không là do bạn quyết định.

Dành cho những người có ít nhất những điều cơ bản nhất trong lĩnh vực lập trình, việc thiết lập Mạng FreeBSD, sẽ không có mặt Vấn đề lớn và sẽ không gây ra bất kỳ khó khăn nào. Hầu hết phiên bản phổ biến Chương trình FreeBSD ngày nay là FreeBSD 6.2.
Để định cấu hình card mạng dựa trên FreeBSD, trước tiên bạn cần xác định kiểu máy, loại card mạng cũng như chip được sử dụng. Bản thân hệ thống sẽ trợ giúp việc này, vì tính năng đặc biệtĐó là khả năng xác định độc lập các loại card mạng được cung cấp bởi nhiều nhà sản xuất toàn cầu.

Trình điều khiển cho nhiều loại card mạng được trình bày trong hạt nhân “Chung” được trình bày như sau:

dc0:<82c169 PNIC 10/100BaseTX>cổng 0xa000-0xa0ff bộ nhớ 0xd3800000-0xd38

000ff irq 15 tại thiết bị 11.0 trên pci0

dc0: Địa chỉ Ethernet: 00:a0:cc:da:da:da

ukphy0: trên miibus0

ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, tự động

dc1:<82c169 PNIC 10/100BaseTX>cổng 0?9800-0?98ff bộ nhớ 0xd3000000-0xd30

000ff irq 11 tại thiết bị 12.0 trên pci0

dc1: Địa chỉ Ethernet: 00:a0:cc:da:da:db

ukphy1: trên miibus1

ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, tự động

Nếu trong "Chung" trình điều khiển cần thiết vì card mạng không có sẵn, bạn có thể tải xuống từ mạng toàn cầu. Tuy nhiên, để việc cài đặt thành công theo cách này, cần phải biên dịch kernel hệ điều hành.
Khi thiết lập card mạng, một yếu tố quan trọng sẽ là đặc quyền của người dùng “root”. Nếu người dùng là người chuyên nghiệp thì họ có thể sử dụng dòng lệnh - ipconfig. Nếu người dùng cần xác định việc cài đặt card mạng có thành công hay không thì phải chọn danh sách bằng cách gõ vào dòng lệnh ipconfig.

dc0: flags=8843 mtu 1500

inet 192.168.1.3 mặt nạ mạng 0xffffff00 phát sóng 192.168.1.255

ether 00:a0:cc:da:da:da

phương tiện: Tự động chọn Ethernet (100baseTX)

dc1: flags=8843 mtu 1500

inet 10.0.0.1 mặt nạ mạng 0xffffff00 phát sóng 10.0.0.255

ether 00:a0:cc:da:da:db

phương tiện truyền thông: Ethernet 10baseT/UTP

tình trạng: không có nhà mạng

lp0: flags=8810 mtu 1500

lo0: flags=8049 mtu 16384

inet 127.0.0.1 mặt nạ mạng 0xff000000

tun0: flags=8010 mtu 1500

Sau khi việc liệt kê đã hoàn tất, bắt buộc mọi người sẽ phải quyết định Thiết bị mạng. Ví dụ như thế này:
*lp0: giao diện cổng song song
* dc0: giao diện Ethernet đầu tiên
* lo0: thiết bị lặp lại

* dc1: giao diện Ethernet thứ hai

* tun0: thiết bị đường hầm được ppp sử dụng

Bạn cũng có thể định cấu hình nó bằng sysinstall. Nếu các thiết bị mạng được kết nối, các triệu chứng tương tự sẽ xuất hiện:
1. LÊN - thẻ đã sẵn sàng để sử dụng và được cấu hình.

2. Thẻ có địa chỉ (trong trường hợp này là 192.168.1.3).

3. Mặt nạ mạng con đã được cài đặt (netmask; 0xffffff00, giống như 255.255.255.0).

4. Địa chỉ quảng bá (trong trường hợp này là 192.168.1.255).

5. Chỉ định Địa chỉ MAC thẻ (ether) 00:a0:cc:da:da:da

6. Chọn phương tiện truyền dữ liệu vật lý cần thiết ở chế độ tự động chọn ((phương tiện: Tự động chọn Ethernet (100baseTX))).
7. Trạng thái kết nối (trạng thái) đang hoạt động, tức là. Đối với dc1, chúng tôi thấy trạng thái: không có sóng mang. Việc đọc này là bình thường nếu cáp không được kết nối với thẻ. Trong trường hợp ipconfig có nghĩa như sau. danh sách thì thẻ không hoạt động chính xác và các cài đặt của thẻ cần được sửa lại.
dc0: flags=8843 mtu 1500

ether 00:a0:cc:da:da:da
Để cấu hình card mạng, bạn phải có quyền người dùng root. nhất nơi tốt nhất Cài đặt card mạng nằm trong tệp /etc/rc.conf. sau khi mở dòng /etc/rc.conf, bạn nên thêm danh sách sau:

ifconfig_dc0=”inet 192.168.1.3 mặt nạ mạng 255.255.255.0?

ifconfig_dc1=”inet 10.0.0.1 mặt nạ mạng 255.255.255.0 phương tiện 10baseT/UTP”

Sau này cần thay dc0, dc1 cho các card tương ứng. Tiếp theo, bạn cần chỉnh sửa tệp /etc/hosts và thêm tên và địa chỉ IP của các máy tính trên mạng. Để có cơ hội nhận thông tin cần thiết về cài đặt mạng, bạn nên liên hệ với địa chỉ Internet để được trợ giúp: man.hosts.5; và tới /usr/share/examples/etc/hosts. Sau đó, bạn cần khởi động lại hệ thống và đảm bảo rằng card mạng hiện có địa chỉ IP. Để kiểm tra, cần ping giao diện hoặc kiểm tra trên mạng cục bộ. Sau khi kiểm tra thành công, bạn có thể nói rằng quá trình thiết lập mạng FreeBSD đã hoàn tất.

Việc sử dụng FreeBSD trên các bộ định tuyến nhỏ để liên lạc với thế giới bên ngoài từ lâu đã không còn là điều gì nổi bật nữa. Hệ điều hành dễ sử dụng, ít tài nguyên và ít bảo trì này gần như lý tưởng để giải quyết những vấn đề như vậy.

Chúng ta sẽ cần

Phần cứng. Để kết nối mạng nội bộ với Internet, máy tính Pentium III 600 MHz, RAM 256 MB, ổ cứng HDD 10 GB, 2 card mạng là đủ. Cấu hình được thực hiện dự trữ; để vận hành chính thức mạng văn phòng nhỏ (khoảng 50 người dùng), Pentium II 400 MHz với 128 MB RAM là đủ. Nhưng trong tương lai, bạn có thể muốn cài đặt một máy chủ proxy trên cùng một cổng chẳng hạn; tốt hơn là nên chọn cấu hình cấp cao hơn.

hệ điều hành: FreeBSD 5.5 hoặc 6.1.

Ngoài ra: bởi vì máy tính này có thể sử dụng liên tục, tôi khuyên bạn nên lắp thêm quạt bên trong thùng máy để cung cấp không khí vào/ra cưỡng bức để làm mát. Gần như tất cả mọi thứ tòa nhà hiện đại ATX cho phép bạn làm điều này.

Vì tất cả các mô-đun cần thiết đều có trong hệ điều hành nên chúng ta không cần bất cứ thứ gì khác.

Cài đặt giao diện mạng

Cần phải làm rõ tên của các giao diện card mạng mà hệ điều hành nhận dạng chúng.

Một cái gì đó như thế này sẽ xuất hiện:

rl0: flags=8843 mtu 1500
tùy chọn=8
ether 00:xx:xx:xx:xx:xx

Trạng thái: Đang hoạt động
xl0: flags=8843 mtu 1500
tùy chọn=9
ether 00:zz:zz:zz:zz:zz
phương tiện: Tự động chọn Ethernet (100baseTX)
Trạng thái: Đang hoạt động
plip0: flags=108810 mtu 1500
lo0: flags=8049 mtu 16384
inet6::1 tiền tốlen 128


Máy tính có hai card mạng được cài đặt với tên giao diện rl0 và xl0.

Trong trường hợp của chúng tôi, giao diện rl0 sẽ “nhìn” vào thế giới bên ngoài và xl0 – vào mạng nội bộ. địa chỉ IP giao diện nội bộ: 192.168.9.2, mặt nạ mạng con 255.255.255.0, tên giao diện xl0; Địa chỉ IP giao diện bên ngoài 83.xxx.xxx.xxx, mặt nạ mạng con 255.255.255.224, tên giao diện rl0.

Tìm hiểu xem card mạng của nhà sản xuất nào tương ứng với card mạng nào địa chỉ mạng, bạn có thể xem tệp GENERIC trong thư mục /usr/src/sys/i386/conf:

# thêm /usr/src/sys/i386/conf/ CHUNG

Trong đó chúng ta tìm thấy các dòng tương ứng:

thiết bị rl # RealTek 8129/8139

thiết bị xl #3Com 3c90x (“Boomerang”, “Cyclone”)

Do đó, giao diện rl0 tương ứng với card mạng RealTek 8129/8139 và các thiết bị tương tự của nó. Giao diện mạng xl0 tương ứng với card mạng 3Com.

Điều đáng nói là riêng tệp GENERIC. Đây là tệp cấu hình kernel được cài đặt theo mặc định khi cài đặt FreeBSD. Nó được tổ chức sao cho hệ thống có thể hỗ trợ hầu hết các thiết bị được sử dụng nhiều nhất, bao gồm cả các card mạng được chỉ định. Rất thường xuyên, các sửa đổi tiếp theo đối với kernel được xây dựng trên một bản sao đã sửa đổi của tệp này. Trong trường hợp này, đây chính xác là những gì chúng tôi sẽ làm:

Cổng của nhà cung cấp theo mặc định là 83.xxx.xxx.1.
Có máy tính người dùng trên mạng – 192.168.9.31, 192.168.9.32.
Tên miền của chúng tôi (có điều kiện) là ourdomain.ru.
Tên máy chủ (máy tính) – ourhost.ourdomain.ru.

Chúng tôi cấu hình card mạng. Bạn có thể sử dụng tiện ích sysinstall (/stand/sysinstall cho FreeBSD 5.5 và /usr/sbin/sysinstall cho FreeBSD 6.1) Nhưng vì chúng tôi biết mọi thứ thông số bắt buộc, sau đó để đơn giản hóa quy trình và tiết kiệm thời gian chúng ta sẽ thiết lập các thông số bằng cách chỉnh sửa các file cấu hình tương ứng.

Để chỉnh sửa chúng tôi sẽ sử dụng soạn thảo văn bản vi, có mặt ở hầu hết mọi nơi hệ thống UNIX. Đối với những quản trị viên vẫn chưa quen với trình soạn thảo, tôi có thể giới thiệu một bài viết tuyệt vời của Maxim Moshkov http://www.lib.ru/unixhelp/vi.txt và http://www.lib.ru/unixhelp/vibegin.txt .

Cài đặt giao diện mạng trong FreeBSD được lưu trữ trong tệp /etc/rc.conf. Mở nó để chỉnh sửa:

# vi /etc/rc.conf

Và thêm dòng sau:

# Bộ giao diện nội bộ
ifconfig_xl0="inet 192.168.9.2 mặt nạ mạng 255.255.255.0"
# Đặt giao diện bên ngoài
ifconfig_rl0="inet 83.xxx.xxx.xxx mặt nạ mạng 255.255.255.224"
# Đặt cổng nhà cung cấp mặc định
bộ định tuyến mặc định="83.xxx.xxx.1"
# Tên máy chủ
tên máy chủ="ourhost.ourdomain.ru"
# Chúng tôi chỉ ra rằng máy chủ sẽ hoạt động như một bộ định tuyến
cổng_enable="CÓ"

Sau đó chúng ta khởi động lại máy tính:

Tại thời điểm này, máy tính không cần phải khởi động lại. Nhưng chúng tôi muốn đảm bảo rằng các giao diện của chúng tôi được cài đặt chính xác và đang hoạt động, vì vậy tôi vẫn khuyên bạn nên khởi động lại.

Sau khi tải chúng tôi kiểm tra:

Đầu ra lệnh Ifconfig:

rl0: flags=8843 mtu 1500
tùy chọn=8
inet6 fe80::215:58ff:fe3e:8fb1%rl0 tiền tốlen 64 phạm vi 0x1
inet 83.xxx.xxx.xxx mặt nạ mạng 0xffffffe0 phát sóng 83.xxx.xxx.yyy
ether 00:xx:xx:xx:xx:xx
phương tiện: Tự động chọn Ethernet (100baseTX)
Trạng thái: Đang hoạt động
xl0: flags=8843 mtu 1500
tùy chọn=9
inet6 fe80::20a:5eff:fe62:ade2%xl0 tiền tốlen 64 phạm vi 0x2
inet 192.168.9.2 mặt nạ mạng 0xffffff00 phát sóng 192.168.9.255
ether 00:zz:zz:zz:zz:zz
phương tiện: Tự động chọn Ethernet (100baseTX)
Trạng thái: Đang hoạt động
plip0: flags=108810 mtu 1500
lo0: flags=8049 mtu 16384
inet6::1 tiền tốlen 128
inet6 fe80::1%lo0 tiền tốlen 64 phạm vi 0x4
inet 127.0.0.1 mặt nạ mạng 0xff000000

File RC.conf theo tôi có thể gọi là tài liệu quan trọng cấu hình. Rất con số lớn các tham số được hệ thống sử dụng được chỉ định dưới dạng các biến tương ứng trong tệp này. Bao gồm các cài đặt cho giao diện mạng, tường lửa và NAT được chúng tôi sử dụng.

Thiết lập cổng

Chúng tôi sẽ sử dụng tường lửa FreeBSD gốc IPFW. Để làm được điều này, chúng ta phải thực hiện một số thay đổi đối với cốt lõi của hệ thống. Nếu bạn có thêm câu hỏi về việc biên dịch lại kernel, tôi khuyên bạn nên đọc tài liệu bổ sung: http://freebsd.org.ru/how-to/kernelconfig.html.

Lưu ý rằng bạn cần sử dụng văn bản nguồn hạt nhân cho kiến ​​trúc tương ứng. Vì kiến ​​trúc máy tính của chúng tôi dựa trên nền tảng i386 nên kernel phải được biên dịch phù hợp với nền tảng. Đối với chủ sở hữu máy tính chạy nền tảng khác, tôi khuyên bạn nên tham khảo tài liệu liên quan.

Nguồn kernel mặc định nằm trong thư mục /usr/src/sys/i386/conf. Theo đó, chúng tôi đi đến thư mục này:

# cd /usr/src/sys/i386/conf

Thông thường, tệp GENERIC chứa các tùy chọn kernel mặc định đã được sửa đổi. Để thực hiện việc này, hãy tạo một bản sao của tệp này:

# cp GENERIC ourkernel

Mở để chỉnh sửa tập tin mới hạt nhân của chúng tôi:

và thêm các tùy chọn sau:

#
tùy chọn IPFIREWALL #firewall
tùy chọn IPFIREWALL_VERBOSE?
#cho phép ghi nhật ký vào syslogd(8)
tùy chọn IPFIREWALL_FORWARD?
#bật hỗ trợ proxy minh bạch
tùy chọn IPFIREWALL_VERBOSE_LIMIT=100 #limit chi tiết
tùy chọn IPFIREWALL_DEFAULT_TO_ACCEPT #cho phép mọi thứ theo mặc định
#
tùy chọn DUMMYNET
#
tùy chọn IPDIVERT #divert ổ cắm

Sau khi thực hiện các thay đổi, bạn có thể bắt đầu biên dịch lại kernel.

Chúng tôi thực hiện các lệnh:

#config hạt nhân của chúng tôi
# cd /usr/src/sys/i386/compile/ourkernel
#làm phụ thuộc
#làm
# thực hiện cài đặt

Khởi động lại:

Nếu máy chủ hoạt động bình thường sau khi khởi động lại, chúng ta tiến hành thiết lập tường lửa.

Để tổ chức hoạt động của tường lửa, các biến sau được sử dụng, được thêm vào tệp RC.conf nếu cần.

Cho phép hoặc từ chối việc sử dụng tường lửa:

# Đặt thành CÓ để bật chức năng tường lửa
tường lửa_enable="KHÔNG"

Tên và vị trí của tệp chịu trách nhiệm khởi tạo tường lửa.

# Chạy script nào để thiết lập tường lửa
tường lửa_script="/etc/rc.firewall"

Khi cài đặt của quy tắc nàyở “CÓ”, đầu ra màn hình bị chặn:

tường lửa_quiet="KHÔNG"

Cho phép/vô hiệu hóa ghi nhật ký sự kiện:

tường lửa_logging="KHÔNG"

Loại cài đặt tường lửa:

tường lửa_type="CHƯA XÁC ĐỊNH"

theo mặc định, FreeBSD sử dụng các quy tắc từ tệp /etc/rc.firewall.

Nó có một số mẫu làm sẵn:

mở - tường lửa cho phép tất cả các gói đi qua.

client – ​​​​được khuyến nghị chỉ bảo vệ máy tính này. Nghĩa là, tường lửa được cấu hình như một máy khách tiêu chuẩn. Nó cho phép tất cả các kết nối đi và từ chối tất cả các kết nối đến, ngoại trừ các kết nối trên cổng 25.

đơn giản – nhằm mục đích thiết lập các cổng đơn giản, v.v. Nghĩa là, như một tường lửa đơn giản bảo vệ mạng nội bộ khỏi sự xâm nhập từ bên ngoài. Chúng tôi sẽ thiết lập một hệ thống quy tắc linh hoạt hơn, vì vậy mẫu này sẽ không được chúng tôi sử dụng.

đã đóng – Cho phép lưu lượng truy cập qua giao diện cục bộ lo0. Phần còn lại của lưu lượng được xác định theo quy tắc mặc định. Theo quy định, đây là từ chối mọi quyền truy cập, ngoại trừ giao diện nội bộ lo0 (nói một cách đơn giản, chỉ được phép truy cập vào chính mình)

KHÔNG XÁC ĐỊNH – cấm tải các quy tắc tường lửa từ tập lệnh cấu hình mặc định. Tường lửa không thể cấu hình được theo bất kỳ cách nào. Việc nó có vượt qua lưu lượng truy cập hay không phụ thuộc vào cấu hình của kernel hệ thống. Được sử dụng theo mặc định.

Biến tương tự trong giá trị “filename” - “file_name” - có thể được sử dụng để đặt tên riêng của bạn tập tin cấu hình cho tường lửa.

Ví dụ:

tường lửa_type="/etc/rc.firewall.newconfig"

sẽ tải cài đặt từ tệp /etc/rc.firewall.newconfig đã tạo.

“firewall_flags=””” – dùng để truyền các đối số bổ sung khi sử dụng tường lửa_type với giá trị tên tệp.

Nhiệm vụ của chúng tôi là tạo ra một hệ thống đáp ứng các tiêu chí sau:

Dễ quản lý.

Khả năng sửa đổi “nhanh chóng”, không được người dùng chú ý. Do đó, những thao tác như ngắt kết nối và đặc biệt là khởi động lại là điều không mong muốn đối với chúng tôi.

Chúng tôi đảm bảo rằng hệ thống của chúng tôi sẽ hoạt động trên hầu hết các máy.

Trong tập lệnh ví dụ của chúng tôi, tất cả các máy tính trên mạng cục bộ được chia thành hai nhóm có điều kiện: một nhóm có đặc quyền - đây là những nhóm được phép truy cập Internet bằng các dịch vụ được sử dụng phổ biến nhất, chẳng hạn như:

HTTP– cổng 80;
HTTPS– cổng 443;
FTP– cổng 20, 21 và từ 1025 đến 65535;
Giao thức SMTPđể chuyển tiếp thư – cổng 25;
Giao thức POP3để nhận tin nhắn – cổng 110.

Có một nhóm khác, các máy tính chỉ được phép truy cập vào bên ngoài máy chủ công ty với địa chỉ IP 83.xxx.xxx.2 (chỉ Giao thức SMTP và POP3).

Chúng tôi phải đảm bảo rằng có thể thay đổi nhóm đặc quyền, như người ta nói, “nhanh chóng”, nếu có thể mà không vi phạm kết nối được thiết lập. Để thực hiện việc này, chúng tôi gọi tập lệnh bổ sung rc.firewall.local.inet từ tập lệnh của mình. Chỉ cần chỉnh sửa và khởi động lại tập lệnh bổ sung này là đủ mà không ảnh hưởng đến tất cả các cài đặt tường lửa khác.

Ngoài ra, chúng tôi phải cung cấp tình huống khi các tham số mạng thay đổi, chẳng hạn như địa chỉ IP của cổng của nhà cung cấp. Để làm điều này, chúng tôi sẽ sử dụng các biến cục bộ trong tập lệnh. Ví dụ: nếu bạn thay đổi cổng mặc định, chỉ cần thay đổi giá trị của biến intgateway và khởi động lại tập lệnh rc.firewall.run.

Đây là kịch bản ví dụ của chúng tôi:

# vi rc.firewall.run
#!/bin/sh
extip="83.xxx.xxx.xxx"
intip="192.168.9.2"
intnet="192.168.9.0/24"
máy chủ thư="83.xxx.xxx.2"
intgateway="83.xxx.xxx.1"
#
/sbin/ipfw -f tuôn ra &
#
/sbin/ipfw thêm 180 chuyển hướng natd ip từ $(intnet) sang bất kỳ xmit fxp0 nào
/sbin/ipfw thêm 190 chuyển hướng natd ip từ bất kỳ sang $(extip)
#ICMP
/sbin/ipfw thêm 500 cho phép icmp từ bất kỳ đến bất kỳ
#SSH
/sbin/ipfw thêm 10000 cho phép tcp từ bất kỳ đến 22 bất kỳ
/sbin/ipfw add 10010 cho phép tcp từ 22 bất kỳ đến bất kỳ
#DNS
/sbin/ipfw thêm 11000 cho phép tcp từ bất kỳ đến 53 bất kỳ
/sbin/ipfw add 11010 cho phép tcp từ 53 bất kỳ tới bất kỳ
/sbin/ipfw add 11020 cho phép udp từ bất kỳ đến bất kỳ 53
/sbin/ipfw add 11030 cho phép udp từ 53 bất kỳ tới bất kỳ
#Web FTP
/sbin/ipfw thêm 12000 cho phép tcp từ tôi đến bất kỳ 20,21,80,443 nào
/sbin/ipfw add 12010 cho phép tcp từ 20,21,80,443 bất kỳ đối với tôi
/sbin/ipfw thêm 12020 cho phép udp từ tôi đến bất kỳ 20.21 nào
/sbin/ipfw add 12030 cho phép udp từ 20,21 bất kỳ đối với tôi
#
# Script cho nhóm đặc quyền
/bin/sh /etc/rc.firewall.local.inet
# Từ chối các máy tính khác của mạng LAN
/sbin/ipfw thêm 12960 từ chối tcp từ $(intnet) vào 20,21,80,443 bất kỳ
/sbin/ipfw thêm 12970 từ chối tcp từ 20,21,80,443 bất kỳ vào $(intnet)
/sbin/ipfw thêm 12980 từ chối udp từ $(intnet) vào bất kỳ 20,21 nào
/sbin/ipfw thêm 12990 từ chối udp từ 20,21 bất kỳ vào $(intnet)
#
#
/sbin/ipfw thêm 13000 cho phép tcp từ $(intnet) đến $(mailserver) 25.110
/sbin/ipfw thêm 13010 cho phép tcp từ $(mailserver) 25.110 đến $(intnet)
#
/sbin/ipfw thêm 55010 cho phép tcp từ bất kỳ đến bất kỳ 1024-65534
/sbin/ipfw thêm 55020 cho phép tcp từ bất kỳ 1024-65534 nào tới bất kỳ
/sbin/ipfw thêm 55030 cho phép tcp từ bất kỳ 1024-65534 nào tới bất kỳ
/sbin/ipfw thêm 55040 cho phép tcp từ bất kỳ đến bất kỳ 1024-65534
/sbin/ipfw thêm 55050 cho phép udp từ bất kỳ đến bất kỳ 1024-65534
/sbin/ipfw thêm 55060 cho phép udp từ bất kỳ 1024-65534 nào tới bất kỳ
/sbin/ipfw thêm 55070 cho phép udp từ bất kỳ 1024-65534 nào tới bất kỳ
/sbin/ipfw thêm 55080 cho phép udp từ bất kỳ đến bất kỳ 1024-65534
# Phủ nhận tất cả
/sbin/ipfw thêm 65534 từ chối ip từ bất kỳ đến bất kỳ

Chúng tôi tạo và chỉnh sửa tập lệnh RC.firewall.local.inet để hoạt động với nhóm địa chỉ đặc quyền:

# vi /etc/ rc.firewall.local.inet
#!/bin/sh
intnet="192.168.9.0/24"
nhóm riêng tư=(31,32)
#
/sbin/ipfw xóa 12310
/sbin/ipfw xóa 12320
/sbin/ipfw xóa 12330
/sbin/ipfw xóa 12340
#
/sbin/ipfw thêm 12310 cho phép tcp từ $(intnet)$(privgroup) đến bất kỳ 20,21,80,443,1025-65535
/sbin/ipfw thêm 12320 cho phép tcp từ 20,21,80,443,1025-65535 bất kỳ đến $(intnet)$(privgroup)
/sbin/ipfw thêm 12330 cho phép udp từ $(intnet)$(privgroup) đến bất kỳ 20,21,1025-65535 nào
/sbin/ipfw add 12340 cho phép udp từ bất kỳ 20,21,1025-65535 nào đến $(intnet)$(privgroup)

Trong tập lệnh, để thay đổi thành phần của nhóm đặc quyền, bạn cần chỉnh sửa biến nhóm riêng bằng cách thêm/xóa số máy chủ trong mạng con cục bộ.
Ví dụ: để thêm hai máy tính có địa chỉ IP 192.168.9.33 và 192.168.9.45, bạn cần viết “privgroup=(31-33,45)”.

Sử dụng các quy tắc như “/sbin/ipfw delete NNNNN” khi khởi động hệ thống khi không có quy tắc như vậy thì hơi xấu. Khi bạn cố gắng xóa một quy tắc không tồn tại, hệ thống sẽ hiển thị thông báo sau trên bảng điều khiển:

ipfw: quy tắc 13031: setsockopt(IP_FW_DEL): Đối số không hợp lệ

Tuy nhiên, hệ thống vẫn tiếp tục hoạt động bình thường.

Nếu bạn thực hiện mọi thứ một cách nghiêm ngặt, thì bạn cần tạo hai tập lệnh: một tập lệnh để chạy khi khởi động, tập lệnh thứ hai - khi các thay đổi được thực hiện khi đang di chuyển. Nhưng sau đó sẽ cần phải thực hiện những thay đổi phù hợp cho cả hai tập lệnh. Vì mục tiêu chính là tạo ra một hệ thống dễ quản lý nên vấn đề này có thể được bỏ qua trong trường hợp của chúng tôi.

Nhưng bây giờ, sau khi thực hiện những thay đổi thích hợp, chúng ta có thể chỉ cần khởi động lại tập lệnh cho nhóm đặc quyền.

# /bin/sh rc.firewall.local.inet

Chúng tôi cũng có thể thực hiện các thay đổi và khởi động lại tập lệnh RC.firewall.run, mặc dù theo thiết kế, chúng tôi sẽ phải thực hiện việc này ít thường xuyên hơn nhiều so với trường hợp tập lệnh nhóm đặc quyền.

# /bin/sh rc.firewall.run

Vì chúng tôi đã viết tập lệnh riêng để vô hiệu hóa các quy tắc hiện có và bắt đầu cấu hình tường lửa thay thế, nên chúng tôi cần suy nghĩ về cách chạy tập lệnh đó.

FreeBSD có một cơ chế tuyệt vời để khởi chạy các chương trình người dùng: tệp rc.local. Theo mặc định nó không có trong hệ thống.

Vì chúng tôi đã tạo tập tin này, thêm vào đó lệnh khởi chạy daemon natd, chịu trách nhiệm hỗ trợ NAT.

Daemon natd được bắt đầu từ tệp RC.conf. (Tập tin này một lần nữa, thực sự nó chơi vai trò quan trọng cho tất cả mọi người Hệ thống FreeBSD nói chung là!)

Cơ chế chạy file này từ rc.conf được thực hiện thông qua các biến sau:

# -- đường dẫn tới file natd
natd_program="/sbin/natd"
# Kích hoạt NAT (nếu tường lửa_enable == CÓ)
natd_enable="CÓ"
# Giao diện bên ngoài hoặc địa chỉ IP để sử dụng
natd_interface=""
# Cờ khởi động natd bổ sung
natd_flags=""

Nhưng trong trường hợp này, chúng tôi sẽ sử dụng lệnh gọi daemon natd thông qua rc.local. Đội:

# vi /etc/rc.local

tự động tạo tệp /etc/rc.local và mở tệp đó để chỉnh sửa.

Thêm các dòng sau vào nó:

# Lệnh chạy natd
/sbin/natd -n rl0
# trong đó “-n rl0” là tên của giao diện mà NAT đang chạy
#
# Và chạy tập lệnh của chúng tôi để đặt quy tắc tường lửa:
/bin/sh /etc/rc.firewall.run

Khởi động lại và kiểm tra quyền truy cập vào các nguồn lực cần thiết Internet từ máy tính từ mạng cục bộ.

1. Evi Nemeth, Garth Snyder, Scott Seabass, Trent R. Hein. UNIX. Sự quản lý quản trị hệ thống. "BHV", "Peter", 2004
2. Alexey Fedorchuk, Alexey Thorne. BSD miễn phí. Cài đặt, cấu hình, sử dụng. BHV, 2003
3. Philip Torchinsky. Hướng dẫn thực hành quản trị viên UNIX. "Biểu tượng", 2003