1 |
Здравствуйте. |
2 |
|
3 |
Помогите понять одну вещь. |
4 |
Дано: 1 комп, у компа есть два интерфейса: |
5 |
eth0: addr:192.168.7.7 - шлюз установлен 192.168.7.1 |
6 |
tun0: addr:10.1.0.2 P-t-P:10.1.0.1 |
7 |
на компе рабоает 2 пользователя: kit и babaz. сейчас они оба ходят в |
8 |
интернет через 192.168.7.1. |
9 |
|
10 |
Надо: Сделать так чтобы kit ходил в инет через 10.1.0.1, а babaz через |
11 |
192.168.7.1. |
12 |
|
13 |
Решение (как я сделал): |
14 |
1. Создать табличку маршрутизации for_kit: |
15 |
/etc/iproute2/rt_table: |
16 |
-------------------------- |
17 |
# |
18 |
# reserved values |
19 |
# |
20 |
255 local |
21 |
254 main |
22 |
253 default |
23 |
0 unspec |
24 |
# |
25 |
# local |
26 |
# |
27 |
1 for_kit |
28 |
-------------------------- |
29 |
|
30 |
2. С помощью ip route add добавить в for_kit следующие маршруты: |
31 |
10.1.0.1 dev tun0 proto kernel scope link src 10.1.0.2 |
32 |
default via 10.1.0.1 dev tun0 |
33 |
|
34 |
3. Пометить все пакеты от пользователя kit: |
35 |
iptables -t mangle -A OUTPUT -m owner --uid-owner kit -j MARK --set-mark 0x1 |
36 |
|
37 |
4. Добавить правило маршрутизации: |
38 |
ip rule add fwmark 0x1 lookup for_kit |
39 |
|
40 |
5. Ожидаемый результат: все должно работать. |
41 |
|
42 |
Однако все не работает :) |
43 |
При снифинге интерфейса tun0 я вижу вот что: |
44 |
--------------------------------------------- |
45 |
tshark -i tun0 |
46 |
Capturing on tun0 |
47 |
0.000000 192.168.7.7 -> 94.100.176.20 TCP 59027 > smtp [SYN] Seq=0 |
48 |
Win=5840 Len=0 MSS=1460 TSV=47371023 TSER=0 WS=7 |
49 |
2.997266 192.168.7.7 -> 94.100.176.20 TCP 59027 > smtp [SYN] Seq=0 |
50 |
Win=5840 Len=0 MSS=1460 TSV=47371923 TSER=0 WS=7 |
51 |
--------------------------------------------- |
52 |
Наши пакетики имеют не верный адрес источника. Это конечно же поправимо |
53 |
правилом: |
54 |
iptables -t nat -I POSTROUTING 1 -m mark --mark 0x1 -j SNAT --to-source |
55 |
10.1.0.2 |
56 |
|
57 |
После добавления такого правила все начинает рабоатать. Но не понятно |
58 |
почему же пакетам назначается не правильный адрес источника? |