Lưu lượng mạng riêng biệt trên hai giao diện mạng


11

Bạn có thể cho mượn chuyên môn của mình để hiểu cách cấu hình phân tách lưu lượng mạng trên hai giao diện mạng không?

Theo tôi hiểu cho đến nay, các tuyến tĩnh được sử dụng cho lưu lượng mạng không được thiết kế để sử dụng cổng mặc định. Cổng mặc định được sử dụng cho tất cả lưu lượng truy cập không dành cho mạng cục bộ và không có tuyến đường ưa thích nào được chỉ định trong bảng định tuyến.

Kịch bản như sau.

  • Mỗi máy tính trong mạng có hai card mạng.
  • Giao diện sản xuất cho mỗi là eth0(GW = 10.10.10.1).
  • Giao diện quản lý cho mỗi là eth1(GW = 192.168.100.1).
  • Lưu lượng sản xuất và quản lý nên được tách biệt hoàn toàn.

Tôi đã đăng, bên dưới, những điều tôi đã thử với Debian Wheezy. Và, vấn đề của tôi là, mặc dù tôi có các máy chủ được thiết lập theo cách mà chúng giao tiếp trên cả hai giao diện, các máy chủ riêng lẻ dường như "nghe" lưu lượng truy cập trên giao diện sai. Ví dụ:

Máy chủ lưu trữ 140

eth0      Link encap:Ethernet  HWaddr 08:00:27:d1:b6:8f
          inet addr:10.10.10.140  Bcast:10.10.10.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fed1:b68f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1341 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2530 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:641481 (626.4 KiB)  TX bytes:241124 (235.4 KiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:ad:14:b6
          inet addr:192.168.100.140  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fead:14b6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7220 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5257 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:602485 (588.3 KiB)  TX bytes:1022906 (998.9 KiB)

Từ máy chủ 140, tôi thực hiện lệnh này : tcpdump -i eth0. Trong một phiên riêng trên máy chủ 140, tôi thực thi ping 192.168.100.50.

19:17:29.301565 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 10, length 64
19:17:30.301561 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 11, length 64
19:17:31.301570 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 12, length 64
19:17:32.301580 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 13, length 64

Tại sao tôi thấy đầu ra trên eth0? Tôi nghĩ rằng tôi chỉ nên xem lưu lượng truy cập cho 10.10.10.140. Tôi cũng thấy điều này eth1, như mong đợi:

19:18:47.805408 IP 192.168.100.50 > 192.168.100.140: ICMP echo request, id 1605, seq 247, length 64

Nếu tôi ping từ Host 50 (cùng ifconfigkết quả - chỉ là một quad cuối cùng khác), thì eth0im lặng và tôi thấy tiếng vang ICMP được bật eth1, như mong đợi.

Tôi muốn hiểu cách định cấu hình từng giao diện để chỉ xử lý lưu lượng mà nó chịu trách nhiệm trong hai loại Linux chính. Tôi nghĩ rằng tôi gần như ở đó, nhưng tôi đang thiếu thứ gì đó mà tôi dường như không thể tìm thấy.

  • Debian Wheezy (7.x) hoặc Debian Jessie (8.x)
  • Enterprise Linux (6.x) (RedHat / CentOS / Khoa học / Oracle).

Tôi biết rằng một giải pháp cho Debian phải tốt cho cả Wheezy và Jessie và giải pháp cho EL sẽ giống nhau cho tất cả các phiên bản EL 6.x. Tôi muốn tránh sử dụng tập lệnh RC để thực thi các lệnh, thay vào đó chọn sử dụng các tệp cấu hình.

Trong Debian, các tệp cấu hình có liên quan mà tôi biết là:

  • /etc/network/interfaces

Trong EL 6.x, các tệp cấu hình có liên quan mà tôi biết là:

  • /etc/sysconfig/network
  • /etc/sysconfig/network-scripts/ifcfg-eth0
  • /etc/sysconfig/network-scripts/ifcfg-eth1
  • /etc/sysconfig/network-scripts/route-eth0
  • /etc/sysconfig/network-scripts/route-eth1
  • /etc/sysconfig/network-scripts/rule-eth0
  • /etc/sysconfig/network-scripts/rule-eth1

/etc/network/interfacesTệp Debian 8 "Jessie" của tôi :

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# Production interface
auto eth0
allow-hotplug eth0
iface eth0 inet static
  address 10.10.10.140
  netmask 255.255.255.0
  gateway 10.10.10.1

# Management interface
auto eth1
allow-hotplug eth1
iface eth1 inet static
  address 192.168.100.140
  netmask 255.255.255.0

Tôi nghĩ netstat -anrcó thể minh họa vấn đề:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.10.10.1      0.0.0.0         UG        0 0          0 eth0
10.10.10.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 eth1

kiểm traiptabels -L -t nat
tiếng Ba Tư

Câu trả lời:


7

Tôi muốn biết thêm về chủ đề này để tinh chỉnh cấu hình để trở thành tốt nhất có thể, nhưng đây là những gì tôi có cho đến nay. Ngay cả khi không bật tính năng lọc ARP trên tất cả các giao diện mạng ( net.ipv4.conf.all.arp_filter = 0), như được đề cập bởi @spuk, lưu lượng truy cập dường như được tách biệt hoàn toàn trong cấu hình này.

Các tập tin, /etc/iproute2/rt_tablesít nhất giống nhau trong EL 6.x và DEB 7/8, ít nhất. Đây là tệp tạo bảng định tuyến được đặt tên cho các tuyến tĩnh.

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
1 mgmt

Ở trên, số lượng được đặt tên, tuyến tĩnh, 1, về cơ bản là tùy ý; hoặc, mỗi tuyến tĩnh có số duy nhất của riêng nó trong khoảng từ 1 đến 252.

Tệp, /etc/network/interfacestrong DEB 7/8, ít nhất:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
  iface lo inet loopback

# The production network interface
# The 'gateway' directive is the default route.
# Were eth0 configured via DHCP, the default route would also be here.
auto eth0
allow-hotplug eth0
iface eth0 inet static
  address 10.10.10.140
  netmask 255.255.255.0
  gateway 10.10.10.1

# The management network interface
# The 'gateway' directive cannot be used again because there can be
# one, and only one, default route. Instead, the 'post-up' directives
# use the `mgmt` static route.
auto eth1
allow-hotplug eth1
iface eth1 inet static
  address 192.168.100.140
  netmask 255.255.255.0
  post-up ip route add 192.168.100.0/24 dev eth1 src 192.168.100.140 table mgmt
  post-up ip route add default via 192.168.100.1 dev eth1 table mgmt
  post-up ip rule add from 192.168.100.140/32 table mgmt
  post-up ip rule add to 192.168.100.140/32 table mgmt

Kết quả của ip route showDebian:

default via 10.10.10.1 dev eth0
10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.140
192.168.100.0/24 dev eth1  proto kernel  scope link  src 192.168.100.140

Tệp EL 6.x /etc/sysconfig/network:

NETWORKING=yes
HOSTNAME=localhost.localdomain
GATEWAY=10.10.10.1

Ở trên, GATEWAY là tuyến đường mặc định. Dưới đây, BOOTPROTOCOL được đặt thành DHCP, tuyến mặc định sẽ được lấy từ DHCP.

/etc/sysconfig/network-scripts/ifcfg-eth0Tệp EL 6.x , không có "HWADDR" và "UUID":

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=10.10.10.140
NETMASK=255.255.255.0
NETWORK=10.10.10.0
BROADCAST=10.10.10.255

/etc/sysconfig/network-scripts/ifcfg-eth1Tệp EL 6.x , không có "HWADDR" và "UUID":

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=192.168.100.140
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255

Tệp EL 6.x /etc/sysconfig/network-scripts/route-eth1:

192.168.100.0/24 dev eth1 table mgmt
default via 192.168.100.1 dev eth1 table mgmt

Tệp EL 6.x /etc/sysconfig/network-scripts/rule-eth1:

from 192.168.100.0/24 lookup mgmt

Kết quả của ip route showEL 6.x:

192.168.100.0/24 dev eth1  proto kernel  scope link  src 192.168.100.160
10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.160
169.254.0.0/16 dev eth0  scope link  metric 1002
169.254.0.0/16 dev eth1  scope link  metric 1003
default via 10.10.10.1 dev eth0

4

Tôi chưa đọc hết tất cả bài đăng của bạn (xin lỗi, thực sự không thể dành thời gian ngay bây giờ), nhưng tôi tin rằng nó có thể liên quan đến cách Linux triển khai mô hình máy chủ IP :

... Việc triển khai IPv4 trong Linux mặc định cho mô hình máy chủ yếu. ...

Từ cùng một trang:

... Nếu ngăn xếp IP được triển khai với mô hình máy chủ yếu, nó chấp nhận mọi gói dữ liệu cục bộ bất kể giao diện mạng mà gói tin được nhận. ...

Đó là, trong Linux, theo mặc định, các địa chỉ IP "thuộc về máy chủ", không hoàn toàn "thuộc về giao diện". Bạn có thể thay đổi hành vi thông qua arp_filter, rp_filter, arp_announce, arp_ignoresysctls (nhận được từ LVS: ARP vấn đề , nhìn thấy ở đây ). Ngoài ra, xem ip-sysctl.txt .


Bài viết này hoạt động tốt với tôi: seels.net/2006/12/linux-multi-homing
Richard Gomes
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.