Tôi có một công thức tôi đã sử dụng trong nhiều trường hợp, nhưng lần này không hoạt động trên Debian 11 (kernel 5.10.0-10-amd64)
thiết lập của tôi về cơ bản là một giao diện bên trong eth0 cho mạng LAN RFC1918 và hai giao diện bên ngoài được kết nối với Hộp của một số ISP:
eth1 cho ISP1 làm bộ định tuyến mặc định tại 10.0.0.254 với IP công khai 1.2.3.4 (nghĩa bóng)
eth2 cho ISP2 có bộ định tuyến ở 10.0.3.254 với công khai 2.3.4.5
Tôi có tuyến đường khác nhau có thể. Tôi muốn kiểm soát gói tin của mình đi theo tuyến nào, vì vậy tôi tạo một số quy tắc và fwmark. Đầu tiên tôi nối thêm 2<tab>bộ định tuyến thứ hai
Trong /etc/iproute2/rt_tables
quy tắc ip thêm bộ định tuyến thứ hai tra cứu fwmark 0x3
tuyến ip thêm mặc định qua bảng thứ hai 10.0.3.254
tất cả mọi thứ là tốt về bảng danh sách lộ trình ip secondrouter
và danh sách quy tắc ip
tại thời điểm này tôi có thể làm:
cuộn tròn -4 ifconfig.me
1.2.3.4 #<- địa chỉ ip công khai của tuyến đường mặc định của tôi
sau đó tôi làm
iptables-legacy -t mangle -A OUTPUT -d 34.117.59.81 -j MARK --set-mark 0x3
bây giờ nếu tôi làm
cuộn tròn -4 ifconfig.me
<thời gian chờ>
Nơi tôi mong đợi 2.3.4.5 là IP công cộng.
Vì vậy, rõ ràng gói được đánh dấu không đi theo lộ trình từ bảng lộ trình ip, tệ hơn là hết thời gian chờ.
Nếu tôi làm điều này chính xác theo cách tương tự trên Debian cũ hơn, nó sẽ hoạt động hoàn hảo.
NB: nếu tôi làm một
định tuyến ip thêm 34.117.59.81 qua <IP bộ định tuyến thứ hai>
bài kiểm tra độ cong của tôi hoạt động hoàn hảo như mong đợi
cuộn tròn -4 ifconfig.me
2.3.4.5 #<- Địa chỉ ip xuất bản của bộ định tuyến thứ hai của tôi
Vấn đề của tôi xảy ra khi sử dụng iptables
hoặc iptables-di sản
để đánh dấu các gói để định tuyến.
BTW Tôi có rất nhiều quy tắc iptables hoạt động tốt, vì vậy có vẻ như đây không phải là sự cố iptables.
iptables-legacy-save
# Được tạo bởi iptables-save v1.8.7 vào Chủ nhật ngày 23 tháng 1 22:35:06 năm 2022
* mangle
: CHẤP NHẬN TRƯỚC [41:5019]
:INPUT CHẤP NHẬN [41:5019]
:CHẤP NHẬN TRƯỚC [0:0]
:CHẤP NHẬN ĐẦU RA [44:4752]
:CHẤP NHẬN SAU ĐÓ [44:4752]
-A ĐẦU RA -d 192.168.0.0/16 -j TRẢ LẠI
-A ĐẦU RA -d 172.16.0.0/12 -j TRẢ LẠI
-A ĐẦU RA -d 10.0.0.0/8 -j TRẢ LẠI
-A OUTPUT -d 34.117.59.81/32 -j MARK --set-xmark 0x3/0xffffffff
LÀM
# Hoàn thành vào CN 23/01 22:35:06 2022
# Được tạo bởi iptables-save v1.8.7 vào Chủ nhật ngày 23 tháng 1 22:35:06 năm 2022
*lọc
:INPUT DROP [19:7746]
:GIẢM VỀ PHÍA TRƯỚC [0:0]
:CHẤP NHẬN ĐẦU RA [846:62420]
-A INPUT -m state --state INVALID -j DROP
-A INPUT -m state --state LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
-A INPUT -i lo -j CHẤP NHẬN
-A INPUT -p icmp -j CHẤP NHẬN
-A INPUT -p udp -m udp --dport 500 -j CHẤP NHẬN
-A ĐẦU VÀO -p đặc biệt -j CHẤP NHẬN
-A ĐẦU VÀO -p ah -j CHẤP NHẬN
-A INPUT -p tcp -m tcp --dport 22 -j CHẤP NHẬN
-A INPUT -s 192.168.0.0/16 -p tcp -m tcp --dport 3128 -j CHẤP NHẬN
-A INPUT -s 172.16.0.0/12 -p tcp -m tcp --dport 3128 -j CHẤP NHẬN
-A INPUT -s 10.0.0.0/8 -p tcp -m tcp --dport 3128 -j CHẤP NHẬN
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -m state --state LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
-A PHÍA TRƯỚC -s 192.168.0.0/16 -d 10.0.6.0/24 -j CHẤP NHẬN
-A PHÍA TRƯỚC -s 10.0.6.0/24 -d 192.168.0.0/16 -j CHẤP NHẬN
LÀM
# Hoàn thành vào CN 23/01 22:35:06 2022