Đồ án tốt nghiệp Tìm hiểu lý thuyết và xây dựng Firewall trên nền Linux


II. Kết nối mạng trong Linux 2.1 Giới thiệu



tải về 0.55 Mb.
trang13/18
Chuyển đổi dữ liệu19.08.2016
Kích0.55 Mb.
1   ...   10   11   12   13   14   15   16   17   18

II. Kết nối mạng trong Linux

2.1 Giới thiệu


Trong phần này chúng ta sẽ trình bày tổng quan về kết nối mạng trong Linux bao gồm các vấn đề: Thiết bị, trình điều khiển, giao diện mạng, Các đường kết nối mạng trong Linux.

2.2 Thiết bị, trình điều khiển và giao diện mạng


Trước hết là khái niệm về thiết bị phần cứng, ví dụ card Ethernet. Đó là một tập hợp các thiết bị điện tử, các chip điều khiển… được cắm vào máy tính thông qua một khe cắm mở rộng.

Để có thể truy cập vào thiết bị phần cứng thì hạt nhân phải được phải được cài đặt một số hàm đặc biệt gọi là trình điều khiển. Chẳng hạn với các thiết bị thuộc họ Ethernet thì có các trình điều khiển Becker.Việc truyền thông giữa trình điều khiển và thiết bị thông qua một vùng nhớ vào ra ( I/O ). Vùng nhớ này được thường được ánh xạ địa chỉ lên các thanh ghi vào ra. Các lệnh cũng như dữ liệu trao đổi giữa chúng đều được truyền qua các thanh ghi trên.

Hạt nhân truy cạp vào các trình điều khiển thiết bị thông qua các giao diện. Các giao diện cung cấp các hàm vào ra giống nhau cho tất cả các dạng thiết bị phần cứng, ví dụ như nhận hay truyền một gói tin. Các giao diện được định danh bởi các tên. Các tên này được định nghĩa bên trong hạt nhân. Giao diện Ethernet có tên là eth0, eth1…Chỉ có giao diện SLIP là được gán tên động mỗi khi kết nối SLIP dựoc thiết lập thì một giao diện tương ứng sẽ được gán cho cổng nối tiếp.

Hình 3-2: Giao diện, trình điều khiển và thiết bị

Một số giao diện trong Linux :

+ lo Giao diện loopback, nó được sử dụng cho mục đích thử nghiệm. Trong hạt nhân luôn luôn có một trình điều khiển cho giao diện này

+ ethn Là giao diện cho card mạng Ethernet thứ n + 1. Đây là tên chung cho
tất cả các card Ethernet.

+ dln Giao diện cho bộ điều hợp D_Link DE-600, một dạng khác của thiết bị Ethernet, nó đựoc điều khiển thông qua các cổng song song thay vì các khe cắm ISA hay PCI của máy tính.

+ sln Giao diện SLIP, đựoc liên kết với một cổn nối tiếp, Linux hổ trợ 4 giao diện SLIP

+ pppn Giao diện PPP, giống như giao diện SLIP, một giao diện PPP được liên kết với một cổng nối tiếp khi cổng này chuyển sang chế PPP.

+ plpn Giao diện PLIP. Giao diện này thực hiện truyền các gói tin IP qua cổng song song . Hạt nhân Linux hỗ trợ 3 giao diện PLIP.

2.3 Thiết lập cấu hình mạng TCP/IP


Trong phần này chúng ta sẽ thiết lập cấu hình cho các mạng máy tính Linux sử dụng giao thức TCP/IP. Các vấn đề bao gồm gán địa chỉ IP, cấu hình cho kết nối qua đường nối tiếp. Để tiên dụng và chỉ phải làm một lần thì các lện cấu hình lên để trong một file scripts và đặt trong thư mục /etc/rc.

Hệ thống các tệp thiết lập cấu hình : hệ thống tệp proc, host , networks, các tệp cấu hình cho giao thức SLIP, PPP, PLIP.

Để thiết lập cấu hình cấu hình mạng cho một mạng máy tính Linux ta phải thực hiện các công việc sau:

+ Cấu hình giao diện cho IP: bao gồm giao diện loopback, giao diện Ethernet, chọn đường qua gateway, thiết lập cấu hình cho gateway, giao diện PLIP,giao diện Dummy. Công việc này được thực hiện thông qua các câu lệnh ifconfig và route.

+ Lệnh ifconfig : Lệnh này thường xuyên được sử dụng khi thiết lập cấu hình mạng. Cú pháp của nó như sau:

ifconfig interface [[-net | -host] address [parameters]]

interface là giao diện, address là địa chỉ IP nó có thể viết dưới dạng ký pháp thập phân hay tên chỉ ra trong tệp tin hosts và networks. Khi không có tham số thì nó sẽ đưa lại các thông tin về toàn bộ các giao diện mạng.

+ Lệnh route : Lệnh này được sử dụng khi ta muốn cấu hình một mạng có khả năng kết nối với các mạng bên ngoài mạng LAN như : với một mạng LAN khác, với Internet…Cú pháp của nó như sau:

route [[-net | defaut | -n ] gw] address

+ Kiểm tra mạng bằng lệnh netstat : Khi thực hiện lện này thì tuỳ thuộc vào tham số đưa vào mà ta có các thông tin khác nhau về cấu hình mạng đang được thiết lập. Ví dụ như với tham số -rn sẽ in ra bảng chọn đường mà hệ thống sử dụng với địa chỉ IP được viết dưới dạng ký pháp thập phân. Với tuỳ chọn –I hiển thị các thông tin về giao diện đã được sử dụng, với tuỳ chọn –a tất cả các giao diện trong hạt nhân sẽ được hiển thị. Với tuỳ chọn –t,-u,-w,-x sẽ hiển thị các soket TCP, UDP, RAW, và UNIX đang kích hoạt. Nếu thêm tuỳ chọn –a thì sẽ hiển thị tất cả các socket đang chờ yêu cầu kết nối, tức là tất cả các server đang chạy trên hệ thống..


2.4 Truyền các packet


Phần này xem xét việc xử lý một packet IP phải truyền qua một box Linux. Packet ở tầng 3 được xử lý với hàm ip_rcv. Tại đó, ta có hook Netfilter thứ nhất.
Netfilter là một bộ lọc packet/ bộ gây chệch packet/ framework NAP của họ Linux

kernel 2.4. Netfilter là một framework được tổng quát hóa của các hook trong ngăn xếp mạng. Một module mức kernel bất kỳ có thể cài vào ít nhất một trong số các hook này và sẽ nhận từng packet qua các hook này. Các hook của netfilter hiện đang hoạt động trong IP v4, IP v6, DECnet. Có năm loại hook trong nhân Linux, như minh họa trong hình sau.



Hình 3 3: Sơ đồ Netfilter hook


Về cơ bản, các hook này có thể quyết định loại bỏ hay tiếp tục truyền packet. Giả sử packet này vẫn tồn tại sau lần hook thứ nhất, nó sẽ được tiếp tục định tuyến sau đó.

Định tuyến là việc tra trong cấu trúc của bảng FIB (Forwarding Information Table) để xác định một điểm nhập định tuyến tương ứng với địa chỉ IP đích của packet. Bước tiếp theo là ghép với các định tuyến.

Bước này là xác định tuyến ta sẽ truyền packet. Do việc tra trong cấu trúc bảng FIB có chi phí khá lớn nên ta sẽ dùng một cache định tuyến lưu các tuyến đang được dùng. Dùng một hàm băm để tra trong cache này, hàm băm này kết hợp địa chỉ nguồn và địa chỉ đích. Vì thế hai packet có chung trường này sẽ được định tuyến giống nhau trong bước tiếp theo, một định tuyến đa đường là không thể nếu không có chỉnh sửa trong hệ thống cache.

Sau bước này, packet đã sẵn sàng được chuyển đi. Trong suốt pha định tuyến, trường skb->dst đã được thiết lập. Tiếp theo là gọi phương thức nhập liệu input tương ứng với đích đến. Tại pha này, trường TTL trong header IP sẽ giảm dần và MTU(maximum transmission unit) của giao tiếp mạng sắp đến sẽ được kiểm tra. nếu MTU có kích thước nhỏ hơn kích thước của packet, packet sẽ được phân mảnh, còn ngược lại, có thể trực tiếp truyền vào giao tiếp này. Các thông điệp ICMP cũng tạo được trong pha này.

Nếu thông tin cần thiết để chuyển packet tới tuyến tiếp theo không được biết, một packet arp sẽ được gửi đi để xác định địa chỉ phần cứng của giao tiếp mạng tiếp theo. Khi có được những thông tin này rồi, trường MAC sẽ được sửa lại và gói tin đã sẵn sàng để gửi đi theo tuyến kế tiếp.

Thư viện Packet Capture (libpcap) cung cấp một giao diện mức cao cho hệ thống nghe và bắt packet. Mọi packet trên mạng, kể cả những packet quảng bá (broadcast) đều có thể truy cập được theo cơ chế này.

Libipq là một thư viện được phát triển trợ giúp việc xếp hàng các packet trên không gian người dùng của iptables.

Netfilter của Linux cung cấp một cơ chế truyền các packet ra ngoài stack để sắp hàng trong không gian người dùng sau đó nhận lại các packet này vào trong kernel và xác định sẽ làm gì với packet (chấp nhận hay loại bỏ). Những packet này có thể được chỉnh sửa trong không gian người dùng trước khi được nhận trở lại vào kernel.




1   ...   10   11   12   13   14   15   16   17   18


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2019
được sử dụng cho việc quản lý

    Quê hương