Cách xây dựng một cổng từ hệ điều hành Linux của tôi


Câu trả lời:


6

Đối với một bộ định tuyến đơn giản, thực sự chỉ có hai bước cần phải được thực hiện.

Cho phép định tuyến

Bước đầu tiên là cho phép định tuyến trong kernel. Theo mặc định, kernel bỏ các gói mà nó không nhận ra; một khi bạn kích hoạt định tuyến, nó sẽ chuyển tiếp chúng. Bạn cần đưa ra một trong hai lệnh này khi máy tính khởi động:

sysctl -w net.ipv4.ip_forward=1
echo 1 >/proc/sys/net/ipv4/ip_forward

Nhiều bản phân phối có một tệp được gọi /etc/sysctl.conf, trong đó bạn có thể đặt dòng net.ipv4.ip_forward=1để thực thi lệnh đó khi máy tính khởi động. Nếu có một thư mục /etc/sysctl.d, bạn có thể thêm một tệp trong thư mục đó thay vì chỉnh sửa /etc/sysctl.conf; gọi tập tin something.conf.

Đối với IPv6, cài đặt tương ứng là net.ipv6.conf.all.forwardinghoặc /proc/sys/net/ipv6/conf/all/forwarding. Bạn cũng có thể sử dụng net.ipv4.conf.all.forwardinghoặc /proc/sys/net/ipv4/conf/all/forwardingcho IPv4.

Đặt bảng định tuyến

Bước thứ hai là thiết lập các bảng định tuyến. Điều này có thể đơn giản hoặc phức tạp tùy thuộc vào mức độ bạn cần làm. Để sử dụng đơn giản, hãy định cấu hình từng địa chỉ và netmask của giao diện mạng của bạn và thêm bất kỳ tuyến bổ sung cần thiết nào bằng routelệnh.

Vượt ra ngoài định tuyến đơn giản

Nếu bạn cần viết lại các gói, lệnh cơ bản là iptables( ip6tablesđối với IPv6). .

Đối với các thiết lập phức tạp, hãy xem iplệnh từ gói iproute2 .


Xin chào Gilles! Tôi làm theo suy nghĩ của bạn. Một cái gì đó như thế này: eth0 - có mạng LAN. eth1 có IP 192.168.30.1. Sau này, tôi đã làm: iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADEiptables --append FORWARD --in-interface eth1 -j ACCEPT. Tôi đặt IP của máy khách của mình thành 192.168.30.10. Máy khách của tôi được kết nối với máy chủ linux thông qua eth1. Ok, khi tôi ping 192.168.30.1, nó ổn, nhưng tôi không thể kết nối với internet. (không thể ping google.com hoặc bất kỳ địa chỉ web nào khác). Tôi cũng đã viết DNS hợp lệ của mình trong /etc/resolv.conf. Bạn có thể giúp tôi về điều này? Cảm ơn.
artaxerxe

@artaxerxe Tôi không thể nói những gì sai từ nhận xét của bạn. Bạn nên hỏi một câu hỏi mới. Bạn có thể ping 8.8.8.8không? Nếu có, bạn có một vấn đề DNS. Nếu không, bạn có một vấn đề kết nối IP; sao chép-dán đầu ra của ifconfig, route -n, iptables -nvLiptables -t nat -nvL.
Gilles 'SO- ngừng trở nên xấu xa'

3

Đầu tiên hãy cắm IP của mạng mà bạn muốn đóng vai trò là bộ định tuyến. Có được nhiều thẻ giao diện mạng hoặc cấu hình một giao diện ảo.
Bạn cần kích hoạt chuyển tiếp gói từ /etc/sysctl.confvà sau đó định cấu hình iptables cho NAT. Đây là một hướng dẫn ngắn gọn cho cùng.


Xin chào Aditya. Tôi đã theo liên kết của bạn, nhưng tôi có vấn đề với nó. Xem bình luận mà tôi đã viết cho Gilles
artaxerxe
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.