зеркало из
				https://github.com/iharh/notes.git
				synced 2025-10-30 05:06:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			209 строки
		
	
	
		
			10 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			209 строки
		
	
	
		
			10 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/
 | |
| rh
 | |
|     https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/html/configuring_and_managing_networking/index
 | |
|     https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/html/configuring_and_managing_networking/configuring-policy-based-routing-to-define-alternative-routes
 | |
|     https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/pdf/configuring_and_managing_networking/Red_Hat_Enterprise_Linux-10-Configuring_and_managing_networking-en-US.pdf
 | |
|     ? no this in rh10
 | |
|     https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_networking/configuring-policy-based-routing-to-define-alternative-routes_configuring-and-managing-networking
 | |
| 
 | |
| 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
 | |
|         https://www.man7.org/linux/man-pages/man8/ip-rule.8.html
 | |
|         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
 | |
|         SELECTOR
 | |
|             ... [ fwmark FWMARK[/MASK] ]
 | |
|                 https://unix.stackexchange.com/questions/626779/whats-the-meaning-of-these-ip-route-rules
 | |
|                     ip rule add fwmark 1 lookup 100
 | |
|                     adds a rule to packets marked as 1 (I suppose with a --set-mark 1 in iptables) 
 | |
|                 https://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.netfilter.html
 | |
|                 https://utcc.utoronto.ca/~cks/space/blog/linux/LinuxIpFwmarkMasks
 | |
|                 https://utcc.utoronto.ca/~cks/space/blog/tech/IPRecursiveRoutingProblem
 | |
|                 https://serverfault.com/questions/745878/command-line-utility-to-test-fwmark-in-ip-rule-ip-route
 | |
|                     !!! use ip route get with marks
 | |
|                     !!! eBPF program can also be attached for marking
 | |
|     flush
 | |
|     save
 | |
|     restore
 | |
| 
 | |
| with iptables
 | |
| https://serverfault.com/questions/1014323/making-an-ip-rule-higher-priority-than-local
 | |
|     !!!
 | |
|     # iptables -t mangle -A PREROUTING -i pppoe0 -p tcp -m tcp --dport 80 -j MARK --set-xmark [num]
 | |
|     # ip rule add fwmark [num] table 200
 | |
| 
 | |
| 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
 | |
| 
 | |
| tools
 | |
| https://github.com/cedrickchee/awesome-wireguard
 | |
| https://github.com/cedrickchee/awesome-wireguard#mesh-network
 | |
| https://github.com/slackhq/nebula
 | |
|     https://noiseprotocol.org/
 | |
|     https://nebula.defined.net/docs/
 | |
|     https://medium.com/several-people-are-coding/introducing-nebula-the-open-source-global-overlay-network-from-slack-884110a5579
 | |
| https://github.com/tonarino/innernet
 | |
|     https://blog.tonari.no/introducing-innernet
 | |
|     https://patchwork.ozlabs.org/project/netfilter-devel/patch/1479114761-19534-1-git-send-email-pablo@netfilter.org/#1511797
 | |
| https://tailscale.com/
 | |
|     https://github.com/juanfont/headscale
 | |
|         https://headscale.net/stable/
 | |
|     https://www.youtube.com/@Tailscale/videos 
 | |
| misc
 | |
|     https://github.com/linuxserver/docker-wireguard
 | |
|     https://github.com/netbirdio/netbird
 | |
|     https://github.com/gravitl/netmaker
 | |
|     https://github.com/svenstaro/wiresmith
 | |
| 
 | |
| tools
 | |
|     https://github.com/wagoodman/dive
 | |
|     https://github.com/bitwister/twine
 | |
|         netwoking using labels
 | |
| 
 | |
| 
 | |
| Для перенаправления трафика внутрь 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-контейнера.
 | 
