Điểm:0

Máy chủ Ubuntu vừa là bộ định tuyến NAT riêng vừa là bộ định tuyến công cộng

lá cờ cn

Tôi đang cố gắng làm điều gì đó mà tôi chưa từng thử trước đây. Tôi có Dell PowerEdge 540 mà tôi đã cài đặt Ubuntu. Tôi đã cài đặt một dòng Comcast Business và có cấu hình mạng vật lý như sau:

Máy chủ Ubuntu 20.04.3 LTS

enp10s0f0: (10gb SFP+ Thẻ bổ sung)
IPv4: 5*.2*.204.214
Mạng con: 255.255.255.252
Cổng: 5*.2*.204.213

enp10s0f1: (Thẻ bổ sung 10gb SFP +)
IPv4: 5*.2*.205.1
Mạng con: 255.255.255.0

eno1: (ethernet đồng 1gb)
IPv4: 10.0.0.0
Mạng con: 255.0.0.0

Đây là đầu ra của địa chỉ ip:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 trạng thái qdisc noqueue nhóm UNKNOWN mặc định qlen 1000
    liên kết/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    máy chủ phạm vi inet 127.0.0.1/8 lo
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    inet6 ::1/128 máy chủ phạm vi
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq trạng thái nhóm LÊN mặc định qlen 1000
    liên kết/ether 00:1e:c9:b5:b2:3c brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/8 brd 10.255.255.255 phạm vi toàn cầu eno1
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    inet6 ****::***:c9ff:feb5:b23c/64 phạm vi liên kết
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
3: eno2: <BROADCAST,MULTICAST> mtu 1500 trạng thái qdisc noop DOWN nhóm mặc định qlen 1000
    liên kết/ether 00:1e:c9:b5:b2:3e brd ff:ff:ff:ff:ff:ff
4: enp12s0: <BROADCAST,MULTICAST> mtu 1500 trạng thái qdisc noop DOWN nhóm mặc định qlen 1000
    liên kết/ether 00:10:18:0d:a3:7e brd ff:ff:ff:ff:ff:ff
5: enp10s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc trạng thái mq nhóm LÊN mặc định qlen 1000
    liên kết/ether f4:e9:d4:92:9d:d0 brd ff:ff:ff:ff:ff:ff
    inet 5*.2*.204.214/30 brd 5*.2*.204.215 phạm vi toàn cầu enp10s0f0
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    liên kết phạm vi inet6 fe80::f6e9:d4ff:fe92:9dd0/64
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
6: enp10s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq trạng thái nhóm LÊN mặc định qlen 1000
    liên kết/ether f4:e9:d4:92:9d:d2 brd ff:ff:ff:ff:ff:ff
    inet 5*.2*.205.1/24 brd 5*.2*.205.255 phạm vi toàn cầu enp10s0f1
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    liên kết phạm vi inet6 ****::****:d4ff:fe92:9dd2/64
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi

Tôi đã cấu hình các tuyến ip sau:

mặc định qua 5*.2*.204.213 dev enp10s0f0 proto tĩnh
10.0.0.0/8 dev eno1 liên kết phạm vi kernel proto src 10.0.0.1
5*.2*.204.212/30 dev enp10s0f0 liên kết phạm vi kernel proto src 5*.2*.204.214
5*.2*.205.0/24 dev enp10s0f1 liên kết phạm vi kernel proto src 5*.2*.205.1

Và những điều sau đây được lưu trong tôi /etc/rc.local tập tin:

#!/bin/sh -e

iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -F
iptables -X

###################### Kích hoạt Nat ########################## ##
sudo echo "1" > /proc/sys/net/ipv4/ip_forward

#################### Bật Nat cho nội bộ ########################## #
iptables -t nat -A POSTROUTING -o enp10s0f0 -j MASQUERADE
#iptables -t nat -A POSTROUTING -o enp12s0f1 -j MASQUERADE

################### Bật nhật ký ########################
#iptables -A OUTPUT -j LOG
#iptables -A INPUT -j LOG
#iptables -A FORWARD -j LOG

############# Cho phép theo mặc định #####################
iptables -P CHẤP NHẬN ĐẦU VÀO
iptables -P CHẤP NHẬN ĐẦU RA
iptables -P CHẤP NHẬN VỀ PHÍA TRƯỚC

############################ Cho phép kết nối đến ################### #########
iptables -A INPUT -m conntrack --ctstate "ĐÃ THÀNH LẬP, LIÊN QUAN" -j CHẤP NHẬN

################################# Cho phép kết nối ra ngoài ############# #########
iptables -A OUTPUT -m conntrack --ctstate THÀNH LẬP -j CHẤP NHẬN

######################## cho phép từ bên trong ra bên ngoài
iptables -A FORWARD -i eno1 -m trạng thái "ĐÃ THÀNH LẬP,LIÊN QUAN" -j CHẤP NHẬN
#iptables -A FORWARD -i eno1 -o enp12s0f1 -m trạng thái "ĐÃ THÀNH LẬP,LIÊN QUAN" -j CHẤP NHẬN
###iptables -A CHUYỂN ĐI -i eno1 -o enp10s0f1 -j CHẤP NHẬN
iptables -A FORWARD -i eno1 -o enp10s0f1 -j CHẤP NHẬN
#iptables -A CHUYỂN ĐI -i eno1 -o enp12s0f0 -j CHẤP NHẬN
#iptables -A CHUYỂN ĐI -i enp10s0f1 -o enp10s0f0 -j CHẤP NHẬN
#iptables -A CHUYỂN ĐI -i enp10s0f0 -o enp12s0f1 -j CHẤP NHẬN
thoát 0

Sơ đồ mạng: Sơ đồ mạng, được liên kết vì tôi chưa thể đăng hình ảnh

Như bạn có thể nhận thấy, tôi đã dành rất nhiều thời gian để đọc trực tuyến cách tốt nhất để tiếp cận vấn đề này là gì và phần lớn điều này đã được bình luận. Theo cách tôi hình dung, tôi chỉ cần NAT trên eno1 giao diện. Nhưng, vì nó là linux, tôi có cần iptables để thực hiện định tuyến không NAT? Tôi đã thử vô hiệu hóa nó và mạng công cộng hoàn toàn không hoạt động.

Ngay cả khi tôi làm một thứ hoạt động, cuối cùng nó lại làm hỏng thứ khác. Đã nhiều năm kể từ khi tôi tham gia một lớp học của Cisco và tôi không quen với cảm giác ngu dốt như vậy. Tôi thực sự hy vọng ai đó có thể giúp tôi tìm ra cách tốt nhất để triển khai điều này hoặc có thể phát hiện ra bất kỳ sai sót nào mà tôi đã thực hiện gây ra lỗi.

Nikita Kipriyanov avatar
lá cờ za
Vấn đề chính xác là gì? Chính xác những gì đã phá vỡ trong "từng trường hợp" và làm thế nào, "các trường hợp" là gì? Ngoài ra, vui lòng không đăng tập lệnh bạn sử dụng để thiết lập tường lửa. Tốt hơn là đăng xuất một bức tường lửa đang chạy: `iptables-save`.
Nikita Kipriyanov avatar
lá cờ za
`5*.2*.205.0/24 qua 5*.2*.205.1 dev enp10s0f1` â bạn có thực sự có tuyến đường đó không? Từ cấu hình địa chỉ IP, tôi hy vọng sẽ thấy `5*.2*.205.0/24 src 5*.2*.205.1 dev enp10s0f1`, đây là một điều rất khác.
lá cờ cn
Cảm ơn bạn đã phản hồi nhanh chóng! Các sự cố mà tôi gặp phải khiến mạng **10.0.0.0/8** không thể định tuyến được hoặc mạng **5*.2*.205.1/24** không thể định tuyến được. Một vấn đề lớn là không hiểu đúng về định tuyến Linux. Tôi đã thay đổi cấu hình, loại bỏ tất cả **iptables** bằng cách sử dụng `iptables --flush`, tiếp theo là `ip route del 5*.2*.205.0/24` và `ip route add 5*2*.205.0/24 src 5*.2*.205.1 dev enp10s0f1`, vì mối quan tâm mới của tôi là các IP công cộng bên ngoài không thể truy cập bất kỳ IP công cộng "nội bộ" nào của tôi. Giờ đây, các IP công cộng có thể kết nối ra bên ngoài mà không cần **iptables**.
lá cờ cn
Tôi đã thử `0.0.0.0/1 qua 50.220.205.1 dev enp10s0f1` mà không gặp may. Sẽ tiếp tục cố gắng!
lá cờ cn
**ip route** mới trông như thế này: `mặc định qua 5*.2*.204.213 dev enp10s0f0 proto tĩnh 10.0.0.0/8 dev eno1 liên kết phạm vi kernel proto src 10.0.0.1 5*.2*.204.212/30 dev enp10s0f0 liên kết phạm vi kernel proto src 5*.2*.204.214 5*.2*.205.0/24 dev enp10s0f1 liên kết phạm vi kernel proto src 5*.2*.205.1 `
Nikita Kipriyanov avatar
lá cờ za
Bạn không cần thêm bất kỳ tuyến đường nào theo cách thủ công. Các tuyến duy nhất bạn cần là các tuyến "giao diện", được thêm vào để tương ứng với mặt nạ mạng và tuyến mặc định. Bạn dường như có tất cả chúng. Và một lần nữa, iptables không liên quan gì đến việc định tuyến. Ngoài ra, vui lòng cập nhật câu hỏi với thông tin nâng cao thay vì trả lời trong các nhận xét; Tôi đã sao chép bảng định tuyến của bạn ở đó, phần còn lại tùy thuộc vào bạn. Và, câu trả lời của tôi dưới đây vẫn được áp dụng.
lá cờ cn
Cảm ơn bạn đã làm rõ! Bạn đá :-)
Điểm:1
lá cờ za

Tôi cho rằng ISP của bạn đã thiết lập các tuyến đến mạng 5*.2*.205.0/24 về phía bạn thông qua 5*.2*.204.214.

Giả sử trạng thái sau: Netfilter ở trạng thái mặc định (iptables-save hiển thị không có quy tắc và tất cả các chính sách là CHẤP NHẬN). Mạng công cộng của bạn 5*.2*.205.0/24 hoạt động, máy chủ có cổng mặc định 5*.2*.205.1. mạng riêng 10.0.0.0/8 (có cổng 10.0.0.1) không hoạt động vì NAT chưa được thiết lập. Ngoài ra, tôi mong đợi các máy chủ trong 10.0.0.0/85*.2*.205.0/24 để có thể nhìn thấy và giao tiếp với nhau.

Bạn hầu như không phải làm gì để đạt được điều này. Chỉ cần thiết lập tất cả các IP bằng mặt nạ mạng và bật chuyển tiếp IP trong kernel (ví dụ: net.ipv4.ip_forward=1). Bảng định tuyến của bạn phải giống như bảng bạn đã có.

10.0.0.0/8 để làm việc với Internet, bạn chỉ cần thêm quy tắc sau:

iptables -t nat -A POSTROUTING -o enp10s0f0 -s 10.0.0.0/8 -j MASQUERADE

Nó sẽ thực hiện NAT cho các địa chỉ "màu xám" xuất hiện ngoài tự nhiên. bạn có thể thay thế -j MẶT MẠO với bất kỳ -j SNAT --to-source 5*.2*.205.1 (địa chỉ được gán cho enp10s0f1) hoặc 5*.2*.204.214.

Nếu bạn muốn xem xét mạng 5*.2*.205.0/24 giống như Internet, bạn có thể thêm một quy tắc NAT khác và dịch các kết nối đi vào nó từ 10.0.0.0/8 quá. Quy tắc khác này sẽ giống như quy tắc đầu tiên, ngoại trừ bộ lọc giao diện gửi đi -o enp10s0f1. Nhưng có thể hữu ích nếu để nó không có NAT, đặc biệt nếu bạn kiểm soát mạng và muốn các máy chủ trong đó xem trực tiếp 10.0.0.0/8 thay vì ẩn chúng dưới địa chỉ của cổng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.