зеркало из
https://github.com/iharh/notes.git
synced 2025-10-29 20:56:06 +02:00
160 строки
7.3 KiB
Plaintext
160 строки
7.3 KiB
Plaintext
?
|
|
https://n2x.io/blog/advanced-linux-routing-with-policy-routing
|
|
https://www.baeldung.com/linux/destination-source-routing
|
|
https://lartc.org/
|
|
http://www.ralphb.net/IPSubnet/
|
|
http://www.kohala.com/start/
|
|
https://tldp.org/HOWTO/Adv-Routing-HOWTO/index.html
|
|
https://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simple.html
|
|
https://serverfault.com/questions/1120143/make-ip-route-and-routing-rules-permanent-using-nmcli-on-rhel-8-rocky-8
|
|
... proto static/kernel
|
|
Linux Network Administrators Guide
|
|
https://tldp.org/LDP/nag2/index.html
|
|
Guide to IP Layer Network Administration with Linux
|
|
http://linux-ip.net/html/index.html
|
|
tools
|
|
https://subnetonline.com/
|
|
nmcli
|
|
https://www.ibm.com/support/pages/setup-policy-based-routing-networkmanager
|
|
https://www.networkmanager.dev/docs/api/latest/nm-settings-nmcli.html
|
|
https://www.golinuxcloud.com/nmcli-command-examples-cheatsheet-centos-rhel/
|
|
|
|
4. ip routing
|
|
http://linux-ip.net/html/ch-routing.html
|
|
4.7. routing cache
|
|
http://linux-ip.net/html/routing-cache.html
|
|
5. nat
|
|
http://linux-ip.net/html/ch-nat.html
|
|
http://linux-ip.net/html/nat-overview.html
|
|
http://linux-ip.net/html/nat-stateless.html
|
|
http://linux-ip.net/html/nat-dnat.html
|
|
http://www.linas.org/linux/load.html
|
|
D.2
|
|
http://linux-ip.net/html/tools-ip-route.html
|
|
|
|
rules
|
|
https://bbs.archlinux.org/viewtopic.php?id=251095
|
|
https://doc.lagout.org/network/inetdoc/Policy_Routing_in_Linux_ENG.pdf
|
|
https://blog.scottlowe.org/2013/05/29/a-quick-introduction-to-linux-policy-routing/
|
|
http://www.policyrouting.org/
|
|
http://www.policyrouting.org/PolicyRoutingBook/ONLINE/CH05.web.html
|
|
ip rule help
|
|
man ip-rule
|
|
|
|
$ ip rule
|
|
help
|
|
http://linux-ip.net/html/tools-ip-rule.html
|
|
list/show
|
|
0: from all lookup local
|
|
32766: from all lookup main
|
|
32767: from all lookup default
|
|
add/del SELECTOR ACTION
|
|
flush
|
|
save
|
|
restore
|
|
|
|
https://doc.lagout.org/network/
|
|
https://doc.lagout.org/network/inetdoc/
|
|
https://doc.lagout.org/network/inetdoc/Policy_Routing_in_Linux_ENG.pdf
|
|
|
|
http://www.policyrouting.org/
|
|
http://www.policyrouting.org/PolicyRoutingBook/ONLINE/TOC.html
|
|
|
|
https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-policy-based-routing-to-define-alternative-routes_configuring-and-managing-networking
|
|
|
|
2025
|
|
https://blog.sdn.clinic/2025/01/advanced-linux-routing-policy-based-routing/
|
|
ip rule add dport 80 table 80
|
|
ip rule add dport 443 table 80
|
|
ip route add default via 192.168.178.1 dev eth1 table 80
|
|
2021
|
|
https://freedium.cfd/https://medium.com/@marthin.pasaribu_72336/linux-policy-routing-introduction-37933f8cb62e
|
|
ip rule list
|
|
ip rule add from 192.168.39.199 lookup custom
|
|
ip route add default via 192.168.30.2 dev eth1 table custom
|
|
2013
|
|
https://blog.scottlowe.org/2013/05/29/a-quick-introduction-to-linux-policy-routing/
|
|
local-table is non-modifiable
|
|
|
|
|
|
Для перенаправления трафика внутрь Docker-контейнера с использованием policy routing, необходимо выполнить несколько шагов.
|
|
В этом сценарии вы можете использовать iptables и ip rule для управления маршрутизацией.
|
|
Предположим, у вас есть Docker-контейнер с известным IP-адресом или именем.
|
|
|
|
### Пошаговое руководство:
|
|
|
|
1. **Узнайте IP-адрес контейнера**:
|
|
|
|
Используйте команду `docker inspect` для получения IP-адреса контейнера:
|
|
```
|
|
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name_or_id>
|
|
```
|
|
|
|
Предположим, IP-адрес контейнера — `172.17.0.2` (замените на ваш IP-адрес).
|
|
|
|
2. **Создайте отдельную таблицу маршрутов**:
|
|
|
|
В файле `/etc/iproute2/rt_tables` добавьте новую таблицу маршрутов, например:
|
|
```
|
|
100 docker
|
|
```
|
|
|
|
3. **Добавьте маршрут для контейнера в новую таблицу**:
|
|
|
|
Добавьте маршрут через виртуальную сеть Docker в новую таблицу. Например:
|
|
```
|
|
ip route add 172.17.0.0/16 dev docker0 table docker
|
|
```
|
|
|
|
Здесь `docker0` — это стандартное имя моста Docker.
|
|
|
|
4. **Создайте правило для перенаправления определённого трафика**:
|
|
|
|
Используйте команду `ip rule` для перенаправления нужного трафика в вашу таблицу маршрутизации.
|
|
Например, перенаправьте весь трафик, поступающий на определённый IP-адрес (например, публичный IP вашего хоста):
|
|
```
|
|
ip rule add from <source_ip> lookup docker
|
|
```
|
|
|
|
Или вы можете перенаправить трафик только по определённому порту:
|
|
```
|
|
ip rule add fwmark 1 lookup docker
|
|
```
|
|
|
|
5. **Используйте iptables для маркировки пакетов**:
|
|
|
|
Маркируйте входящий трафик, который вы хотите перенаправить в контейнер.
|
|
Например, если вы хотите перенаправить трафик на порт `8080`, используйте команду:
|
|
```
|
|
iptables -t mangle -A PREROUTING -p tcp --dport 8080 -j MARK --set-mark 1
|
|
```
|
|
|
|
Этот шаг связывает iptables с вашим правилом маршрутизации, созданным на предыдущем этапе.
|
|
|
|
6. **Настройте NAT для правильной маршрутизации**:
|
|
|
|
Для того чтобы трафик перенаправлялся в контейнер, вам нужно настроить натирование. Например:
|
|
```
|
|
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:8080
|
|
iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -j MASQUERADE
|
|
```
|
|
|
|
Здесь гарантируется, что отправленный трафик будет правильно обработан Docker и вернётся в исходное место.
|
|
|
|
7. **Проверьте настройки**:
|
|
|
|
Убедитесь, что правило маршрутизации и iptables работают правильно:
|
|
```
|
|
ip rule show
|
|
ip route list table docker
|
|
iptables -t mangle -L
|
|
iptables -t nat -L
|
|
```
|
|
|
|
8. **Сохраните настройки**:
|
|
|
|
Чтобы настройки сохранились после перезагрузки, убедитесь, что правила iptables и маршрутизации восстановятся при старте системы.
|
|
Например, вы можете использовать `iptables-save` и скрипты для восстановления правил.
|
|
|
|
Этот подход позволит вам перенаправить входящий трафик через policy routing и iptables внутрь Docker-контейнера.
|