nhiều địa chỉ MAC trên một giao diện mạng vật lý (linux)


20

Câu hỏi đơn giản: Làm cách nào tôi có thể thiết lập nhiều địa chỉ MAC trên một giao diện mạng vật lý (linux)?

Tại sao? ISP của tôi đang kiểm tra ip <-> mac trên GW và tôi muốn định tuyến lưu lượng truy cập thông qua "linuxbox" của mình và hơn là chuyển tiếp nó với ip nguồn khác nhau.

Không kiểm tra ip <-> mac, tôi sẽ sử dụng eth0, eth0: 0, nhưng trong tình huống này tôi cần địa chỉ MAC duy nhất cho mỗi IP.

Câu trả lời:


28

Bạn có thể sử dụng macvlan để tạo nhiều giao diện ảo với các địa chỉ MAC khác nhau.

ip link add link eth0 address 00:11:11:11:11:11 eth0.1 type macvlan
ip link add link eth0 address 00:22:22:22:22:22 eth0.2 type macvlan

Theo lý thuyết, đó là tất cả những gì bạn cần, mặc dù tại một số điểm, một cái gì đó đã phá vỡ kernel và nó sẽ khiến nó sử dụng một MAC cho mọi thứ. Tôi không chắc tình trạng đó là gì; hy vọng nó đã được sửa.

Nếu không, bạn có thể sử dụng arptables để ghi lại địa chỉ MAC trên đầu ra dựa trên giao diện đầu ra hoặc đầu vào dựa trên IP đích:

arptables -A OUT -o eth0.1 --arhln 06 -j mangle --mangle-hw-s 00:11:11:11:11:11
arptables -A OUT -o eth0.2 --arhln 06 -j mangle --mangle-hw-s 00:22:22:22:22:22
arptables -A IN -d 192.168.1.1 --arhln 06 -j mangle --mangle-hw-d 00:11:11:11:11:11
arptables -A IN -d 192.168.1.2 --arhln 06 -j mangle --mangle-hw-d 00:22:22:22:22:22

Thật không may, arptables cũng khá lỗi trong kinh nghiệm của tôi.


1
Xin lỗi vì đã bị hoại tử, nhưng liên quan đến phần "tại một số điểm đã bị hỏng trong kernel và nó sẽ khiến nó sử dụng một phần MAC cho mọi thứ", nó có thể không phải là một lỗi: Tôi phải đặt kernel có thể điều chỉnh "net.ipv4.conf .all.arp_ignore "thành 1 để hoạt động chính xác. Điều chỉnh ARP khác cũng có thể cần thiết; để biết thêm giải thích, đọc nàynày .
MoonSweep

4

Lý do tại sao cầu nối và giao diện TAP của bạn chia sẻ cùng một địa chỉ MAC, là vì cầu không có MAC, cho đến khi nó bị ràng buộc với giao diện. Nếu bạn tạo một cây cầu với BRCTL và thực hiện "trình diễn brctl", bạn sẽ thấy cây cầu có các cổng trống. (Không có giao diện nào bị ràng buộc với nó) Trong liên kết TAP0 với br0, tự nhiên, nó sẽ hiển thị dưới dạng MAC giống nhau. Tôi đã tạo ra một cây cầu thử nghiệm, để minh họa.

# brctl addbr testbr0

[root @ stooge, v.v.] # brctl hiển thị testbr0
cầu tên id giao diện kích hoạt STP
testbr0 8000.000000000000 không

Tôi đã tạo ba bài kiểm tra TAPS. Đầu ra từ "brctl showmacs testbr0".

[root @ stooge, v.v.] # brctl showmacs testbr0
cổng không có mac addr là cục bộ? hẹn giờ lão hóa
  1 86: 51: b6: 95: 0e: b6 có 0,00
  2 86: 58: 63: c6: d4: e7 có 0,00
  3 8a: a7: fa: 17: c5: 12 có 0,00

Như bạn có thể thấy, mỗi cổng cầu có một địa chỉ MAC duy nhất và cây cầu sẽ hiển thị MAC của nó, khi giao diện đầu tiên bị ràng buộc. Nếu bạn kết nối giao diện mạng vật lý, cầu Ethernet sẽ kế thừa địa chỉ MAC của nó và di chuyển tất cả các giao diện ảo xuống. Ví dụ ràng buộc eth0, với cầu thử nghiệm.

[root @ stooge, v.v.] # brctl showmacs testbr0
cổng không có mac addr là cục bộ? hẹn giờ lão hóa
  4 AA: BB: CC: DD: EE: FF có 0,00
  1 86: 51: b6: 95: 0e: b6 có 0,00
  2 86: 58: 63: c6: d4: e7 có 0,00
  3 8a: a7: fa: 17: c5: 12 có 0,00

Sử dụng "brctl show" một lần nữa;

[root @ stooge, v.v.] # brctl hiển thị
cầu tên id giao diện kích hoạt STP
testbr0 8000.00aabbccddee không eth0
                                                        tap00
                                                        tap01
                                                        tap02 

các giao diện TAP đã chuyển xuống một, mặc dù eth0, vẫn ở PORT 4. Bạn vẫn có các địa chỉ MAC duy nhất. Nếu cầu Ethernet bị ràng buộc với giao diện tuyến nguồn, bạn không có lựa chọn nào trong việc sử dụng địa chỉ IP hoặc DHCP. Để biết giá trị của nó, nếu bạn kết nối giao diện nguồn tuyến, bạn sẽ hiển thị địa chỉ MAC "không cục bộ". Đây là địa chỉ MAC của bộ định tuyến hop tiếp theo. Tôi biết trong RedHat, có một tùy chọn trong việc chỉ định IP nguồn, sử dụng IFCONFIG. Tùy chọn đầu tiên của tôi, sẽ là tư vấn tham chiếu lệnh IP, vì tôi nghĩ bạn có thể chỉ định IP nguồn. Tôi chưa bao giờ thử nó.


3

Cố gắng tạo tapcác thiết bị hoặc bất kỳ thiết bị ethernet ảo nào khác có địa chỉ MAC và IP cần thiết và sau đó gắn chúng vào một cây cầu với eth0.


Tôi đã thử điều đó rồi và nó không hoạt động. Nếu tôi sử dụng br0 (eth0, tap0, tap1). Tôi phải đặt IP trên br0 để mạng hoạt động. Không có mạng IP (ifconfig br0 0.0.0.0) không hoạt động. Vì vậy, khi tôi đặt IP trên br0 và tap0. (từ win-pc) Tôi có thể ping cả hai IP nhưng sau arp -a mỗi cái đều có cùng MAC.
grapefruyt

0

Có vẻ như bạn có thể sử dụng vconfig để tạo nhiều địa chỉ vlan trên cùng một ethernet vật lý, mỗi địa chỉ có các địa chỉ mac khác nhau.


Lưu lượng truy cập từ tất cả các IP phải được
bỏ chặn
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.