Stateless NAT в Linux

Если очень захотеть, то и в Linux можно сделать stateless NAT без задействования connection tracking в iptables. Применим не везде и не всегда, но, если вам это нужно, вы понимаете, на что идёте. Вариант с ассиметричным статическим NAT с двумя интерфейсами (трафик приходит на один, уходит с другого):

root@host:~# tc qdisc add dev vpn0 ingress
root@host:~# tc filter add dev vpn0 parent ffff: \
    protocol ip prio 10 u32 \
    match ip dst 91.201.53.190/32 \
    match ip protocol 6 0xff \
    match ip dport 80 0xffff \
    action nat ingress 91.201.53.190/32 192.168.0.2

root@host:~# tc qdisc add dev eth0 root handle 1: htb
root@host:~# tc filter add dev eth0 \
    protocol ip parent 1: prio 10 u32 \
    match ip src 192.168.0.2/32 \
    action nat egress 192.168.0.2/32 91.201.53.109
comments powered by Disqus