Điểm:1

Ngăn chặn định tuyến lưu lượng DHCP

lá cờ ng

Đầu tiên, tôi biết rằng những câu hỏi tương tự như câu hỏi của tôi đã được hỏi ở nơi khác (tôi đã đọc nhiều bài đăng đó!) nhưng tôi không thể tìm ra giải pháp cho vấn đề của mình, vì vậy tôi đang nhờ trợ giúp.

thiết lập của tôi

Tôi có hai mạng trên mạng LAN của mình, 192.168.0.0/24 và 10.11.12.0/24. Cái trước có DHCP chạy trên bộ định tuyến WAN của tôi, cái sau chạy dnsmasq trên Ubuntu Server 20.04 trên một hộp cũng đóng vai trò là bộ định tuyến giữa hai mạng con. Tôi đã định cấu hình dnsmasq để chỉ phục vụ DHCP trên mạng 10.11.12.0/24 với tùy chọn no-dhcp-interface=wlp3s0, wlp3s0 là giao diện ở phía 192.168.0.0/24.

Để tóm tắt:

Bộ định tuyến WAN (cổng vào WAN) là 192.168.0.1/24
  Chạy DHCP cho máy khách trên 192.168.0.0/24

Bộ định tuyến (b/w mạng con):
  Ubuntu Server 20.04 với hai giao diện
    wlp3s0: 192.168.0.2/24 (IP tĩnh)
    eno1: 10.11.12.1/24 (IP tĩnh)

Tôi đã định cấu hình iptables thành FWD và NAT như vậy.

iptables -t nat -A POSTROUTING -o wlp3s0 -j ​​MASQUERADE  
iptables -A FORWARD -i wlp3s0 -o eno1 -m state --state LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN  
iptables -A FORWARD -i eno1 -o wlp3s0 -j ​​CHẤP NHẬN

Tôi đã cho phép DHCP thông qua tường lửa của mình với ufw cho phép 67/udp:

Đến hành động từ
-- ------ ----
67/udp CHO PHÉP Ở Mọi Nơi

Mọi thứ dường như đang hoạt động tốt. Tuy nhiên, từ kinh nghiệm, tôi biết rằng việc chạy hai máy chủ DHCP như thế này có thể gây ra xung đột trừ khi chúng được tách biệt hoàn toàn. (Các máy khách dành cho mạng 192.168.0.0/24 sẽ không hài lòng lắm nếu DHCP cấp cho họ một địa chỉ IP trên mạng 10.11.12.0/24!)

Phát hiện vấn đề

Vì vậy, tôi đã làm như sau để kiểm tra nó.Tôi đã thiết lập trình nghe tcpdump trên giao diện wlp3s0 (192.168.0.2) và sử dụng nmap để mô phỏng yêu cầu Khám phá DHCP bắt nguồn từ giao diện eno1 (10.11.12.1/24), như sau:

sudo tcpdump -i wlp3s0 -n udp cổng 67 hoặc cổng 68

sudo nmap --script Broadcast-dhcp-Discover -e eno1

Đúng như dự đoán, tôi nhận được ưu đãi DHCP từ dnsmasq chạy trên 10.11.12.1. Càng xa càng tốt!

Một số chi tiết bị bỏ qua khỏi đầu ra cho ngắn gọn (anh ấy nói)

Bắt đầu từ Nmap 7.80 ( https://nmap.org ) lúc 22-12-2021 16:19 UTC
Kết quả tập lệnh quét trước:
| phát sóng-dhcp-khám phá:
| Trả lời 1 trên 1:
| IP được cung cấp: 10.11.12.53
| Loại tin nhắn DHCP: DHCPOFFER
| Mã định danh máy chủ: 10.11.12.1
| Địa chỉ phát sóng: 10.11.12.255
| Mặt nạ mạng con: 255.255.255.0
| Máy chủ tên miền: 10.11.12.1
|_ Bộ định tuyến: 10.11.12.1

Tuy nhiên, tcpdump cho thấy rằng cả hai máy chủ DHCP đều phản hồi yêu cầu khám phá. (Thực tế, bộ định tuyến WAN của tôi gửi 2 phản hồi!)

16:19:43.517029 IP 10.11.12.1.68 > 255.255.255.255.67: BOOTP/DHCP, Yêu cầu từ de:ad:c0:de:ca:fe, độ dài 316
16:19:46.486227 IP 10.11.12.1.67 > 255.255.255.255.68: BOOTP/DHCP, Trả lời, độ dài 321
16:19:46.794207 IP 192.168.0.1.67 > 255.255.255.255.68: BOOTP/DHCP, Trả lời, độ dài 323
16:19:46.794207 IP 192.168.0.1.67 > 255.255.255.255.68: BOOTP/DHCP, Trả lời, độ dài 323

Có vẻ như yêu cầu khám phá DHCP được chuyển tiếp tới mạng 192.168.0.0/24 thông qua giao diện wlp3s0. Nhìn vào các quy tắc tường lửa và iptables của tôi, tôi thấy không có lý do gì để ngạc nhiên về điều này. Tuy nhiên, điều tôi thực sự gặp khó khăn là tìm ra cách ngăn chặn nó.

Những gì tôi đã thử

Tôi đã thử nhiều hoán vị quy tắc khác nhau trong cả ufw và iptables nhưng không có kết quả, có thể là do tôi không hiểu hết về iptables hoặc ufw. Một vài ví dụ về những gì tôi đã thử:

(Tất cả các quy tắc ufw/iptables đã được thêm vào đầu bộ quy tắc/chuỗi tương ứng để đảm bảo chúng bị tấn công.)

ừm:

# Hạn chế 67/udp cho một giao diện
ufw cho phép trên eno1 proto udp từ 0.0.0.0/0 đến 0.0.0.0/0 cổng 67

# Từ chối định tuyến
tuyến đường ufw từ chối trên eno1 trên wlp3s0 đến 0.0.0.0/0 cổng 67 proto udp

iptables:

# Ngăn chuyển tiếp cổng UDP 67/68
iptables -I FORWARD 1 -p udp --match multiport --dports 67,68 -j DROP

# Hủy cổng UDP gửi đi 67
iptables -I OUTPUT 1 -p udp --match multiport --dports 67,68 -o wlp3s0 -j ​​DROP

Tôi phải thiếu một số hiểu biết cơ bản về cách thức hoạt động của nó vì không có điều nào ở trên ngăn DHCP của bộ định tuyến WAN nhận khám phá và cung cấp IP trên mạng con 192.168.0.0/24.

Tôi đã đọc ở đâu đó rằng các máy chủ DHCP có thể lắng nghe trên ổ cắm thô (hoặc gói?), Ổ cắm này không tuân theo iptables. Đó không phải là trường hợp của dnsmasq như được ghi lại ở đây https://github.com/imp/dnsmasq/blob/master/FAQ#L195. Tôi cũng đã chứng minh điều đó bằng cách xóa quy tắc cho phép 67/udp trong ufw, sau đó dnsmasq ngừng phản hồi DHCP phát hiện. Có lẽ đáng ngạc nhiên (hoặc không), ngay cả khi quy tắc cho phép bị xóa trong ufw, bộ định tuyến WAN của tôi vẫn tiếp tục nhận và phản hồi khám phá DHCP. Có lẽ vì tôi đã định cấu hình quy tắc iptables để chuyển tiếp tất cả lưu lượng truy cập, nhưng không có quy tắc INPUT tương đương (cho đến khi tôi thêm một quy tắc bằng cách sử dụng ufw).

Những gì tôi muốn đạt được

Tốt nhất là tôi muốn ngăn phát hiện DHCP trên mạng 10.11.12.0/24 thậm chí không đến được mạng 192.168.0.0/24.

Nếu điều đó tỏ ra khó khăn, tôi rất sẵn lòng ngăn các ưu đãi DHCP từ bộ định tuyến WAN của tôi tiếp cận mạng 10.11.12.0/24.

Lưu ý rằng tôi không gặp sự cố trên mạng 192.168.0.0/24 vì tôi đã định cấu hình dnsmasq để không cung cấp DHCP trên giao diện wlp3s0 (192.168.0.2). Điều đó dường như đang hoạt động và DHCP khám phá trên wlp3s0 (192.168.0.2/24) không nhận được phản hồi từ dnsmasq.

Vì vậy, những gì tôi đang thiếu? Tôi đang nói về điều này hoàn toàn sai hay tôi chỉ không hiểu nó hoàn toàn đúng? Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.

Chúc ngày lễ vui vẻ!

Cập nhật

Để trả lời câu hỏi trong nhận xét từ @sleepyhead, đây là thiết lập tự nhiên iptables của tôi.

PREROUTING chuỗi (chính sách CHẤP NHẬN 13452 gói, 4312K byte)
 pkts byte đích prot chọn không tham gia đích nguồn

Chuỗi INPUT (chính sách CHẤP NHẬN 48 gói, 12715 byte)
 pkts byte đích prot chọn không tham gia đích nguồn

ĐẦU RA chuỗi (chính sách CHẤP NHẬN 87 gói, 10884 byte)
 pkts byte đích prot chọn không tham gia đích nguồn

Chuỗi POSTROUTING (chính sách CHẤP NHẬN 55 gói, 8622 byte)
 pkts byte đích prot chọn không tham gia đích nguồn
   32 2262 MẶT MẠO tất cả -- * wlp3s0 0.0.0.0/0 0.0.0.0/0

cập nhật 2

Có thể đây là một vật phẩm về cách tôi tiến hành thử nghiệm của mình không? Điều khiến tôi nghi ngờ là IP nguồn của đầu ra tcpdump. Có thể chạy DHCP Discover trên giao diện đã có IP tạo ra kết quả khác so với khi không có? Dù sao, nếu tôi có thể tái sử dụng một trong những chiếc Raspberry Pi của mình, tôi sẽ chạy thử nghiệm này với nó dưới dạng ứng dụng khách DHCP và xem liệu tôi có nhận được kết quả tương tự hay không, mặc dù tôi nghi ngờ là mình sẽ làm được.

lá cờ ru
Điều bạn cần làm là vô hiệu hóa một trong các máy chủ DHCP và sử dụng cơ chế Chuyển tiếp DHCP để chuyển tiếp DHCP từ mạng này sang mạng khác. Cách duy nhất để làm điều đó là sử dụng NATting chuyên biệt có thể gây ra sự cố hoặc thiết lập Chuyển tiếp DHCP trên các phân đoạn của mạng mà bạn *muốn* không có máy chủ DHCP và chuyển tiếp đến máy chủ DHCP khác. Nhân tiện, đây là cách nó được thực hiện trong thế giới bình thường khi bạn có máy chủ DHCP trên một mạng con khác với mạng mà bạn đang thực hiện DHCP.
sleepyhead avatar
lá cờ in
2 câu trả lời mà bạn thấy từ bộ định tuyến wan là giống nhau, bạn thấy đầu vào và đầu ra, bằng cách nào đó, giao diện của bạn có vẻ được bắc cầu, bởi vì truyền phát tới 255.255.255.255 không được nhảy ranh giới mạng, nhưng của bạn thì có. Nếu giữ bridge thì phải L2 firewall với ebtables. Đừng để cuộc thảo luận về ổ cắm thô làm bạn bối rối, đó là một cuộc tranh luận về triển khai giữa các hệ điều hành hơn là mô tả vấn đề của bạn. ``` địa chỉ ip chương trình brctl ``` Chúng sẽ cho bạn thấy cầu nối giữa các giao diện
lá cờ ng
Cảm ơn bạn đã trả lời, nhưng theo chương trình brctl thì không có cầu nối (không có đầu ra từ lệnh đó).
lá cờ ng
Tôi đã hy vọng tránh được điều đó. Lý do chính của tôi để có DHCP phụ là cung cấp khả năng khởi động PXE trên mạng 10.11.12.0. Ngoài ra còn có một điều phức tạp nữa là giao diện wi-fi trên hộp đó khá dễ hỏng nên tôi không muốn dựa vào nó để cung cấp dịch vụ DHCP cho mạng chính (192) của mình. Trường hợp xấu nhất, tôi có thể thoát khỏi những gì tôi có vì dường như có đủ độ trễ giữa hai ưu đãi DHCP mà DHCP ưa thích của tôi có vẻ như luôn (?) giành chiến thắng trên mạng 10.11.12.0 và mạng 192.168.0.0 có không có xung đột với thiết lập của tôi.
sleepyhead avatar
lá cờ in
Nếu nó không phải là một cây cầu thì bằng cách nào đó, lưu lượng truy cập không được kiểm soát, bao gồm cả các chương trình phát sóng, điều đó sẽ không xảy ra, bạn có thể đăng đầu ra iptables không? iptable -L v -n -t nat
lá cờ ng
Tôi đã thêm đầu ra vào câu hỏi của mình ở trên, cảm ơn.
Điểm:0
lá cờ ng

All sorted, @sleepyhead was onto something about the routing but the issue was much more mundane (or idiotic!) than bridged interfaces etc. There's a switch on the 10.11.12.0/24 network and it turns out I'd left a cable in it that was connected to one of my mesh routers! So there were in fact two routes out of the box to the 192.168.0.0/24 network, one via the wlp3s0 interface (correctly blocked in iptables) and another out via eno1, which obviously was open. This explains why I kept receiving responses from the WAN router and also, I think, why they were duplicated.

Well, blunders aside I hope this will be helpful to someone given how many questions are asked about DHCP and routing.

Đă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.