Ev sunucumun iki eth1
standart arayüzü var (standart bir internet bağlantısı) ve tun0
(bir OpenVPN tüneli). iptables
UID 1002 tarafından sahip olunan yerel bir işlem tarafından üretilen tüm paketleri tun0
ve diğer tüm paketleri de çıkmaya zorlamak istiyorum eth1
.
Eşleşen paketleri kolayca işaretleyebilirim:
iptables -A OUTPUT -m owner --uid-owner 1002 -j MARK --set-mark 11
Şimdi, POSTROUTING zincirinde (muhtemelen mangle tablasından) 11 ile işaretlenmiş paketleri eşleştirmek ve göndermek tun0
, sonra da tüm paketleri eşleştirmek ve göndermek için bir kural koymak için bazı kurallar koymak istiyorum eth1
.
ROUTE hedefini buldum, ancak bu yalnızca kaynak arayüzü yeniden yazıyor gibi görünüyor (yanlış okuduğum sürece).
İptables bu yeteneğine sahip mi? Bunun yerine yönlendirme tablosuyla uğraşmak zorunda mıyım ( bunun yerine ip route
sadece eski route
komutlar aracılığıyla )?
Düzenleme: Belki daha fazla bilgi vermem gerektiğini düşündüm. Şu anda başka iptables kurallarım yok (gelecekte ilgisiz işleri yürütmek için bazı kurallar oluşturabilsem de). Ayrıca, çıktı ip route
:
default via 192.168.1.254 dev eth1 metric 203
10.32.0.49 dev tun0 proto kernel scope link src 10.32.0.50
85.17.27.71 via 192.168.1.254 dev eth1
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.73 metric 203
Yönlendirme masasına dokunmadım - şu anki hali budur (oldukça kirli görünmesine rağmen). Üzgünüm, route
bu makinede eski komut yüklü değil .
Ve ip addr
(elbette, eth0 ve eth2'nin çıktısı göz ardı edilebilir - bunlar şu anda kullanılmayan NIC'ler):
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 1c:6f:65:2a:73:3f brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:1b:21:9d:4e:bb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.73/24 brd 192.168.1.255 scope global eth1
inet6 fe80::21b:21ff:fe9d:4ebb/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:1b:21:6a:c0:4b brd ff:ff:ff:ff:ff:ff
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
link/none
inet 10.32.0.50 peer 10.32.0.49/32 scope global tun0
Düzenleme: Çalışması gereken bir şeyler aldım, ancak işaretli paketleri tun0'a iletmiyor. Temel olarak, bir tablo (11) ekledim ve kullandım:
ip route add table 11 via 10.32.0.49 dev tun0
ip rule add priority 10000 fwmark 11 table 11
Sadece sudo -u user1000 wget -qO- whatismyip.org
, evimin dış IP adresini alıyorum, ancak yaparsam sudo -u user1002 wget -qO- whatismyip.org
, evimin IP adresini de alıyorum (ancak IP’yi OpenVPN tünelinin diğer ucundan almalıyım).
Çalıştırma iptables -vL
, paketlerin işaretleme kuralıyla eşleştiğini doğrular, ancak yönlendirme kuralına uymuyor gibi görünüyor.
EDIT: Bu konuda uzun zaman geçirdim ve hala işe yaramamasına rağmen, biraz daha yakınım sanırım.
İptables kuralı mangle
tablonun OUTPUT zincirinde olmalıdır. nat
Kaynak adresini ayarlamak için tablonun POSTROUTING zincirinde bir MASQUERADE kuralına ihtiyacım olduğunu düşünüyorum . Ancak, OUTPUT'un mangleı sonrasında gerçekleşen yeniden yönlendirme düzgün çalışmıyor.
Şimdi bunun için 5 saat geçirdim, bu yüzden ara vereceğim ve muhtemelen bu akşam ya da bir ara öğleden sonra geri dönecek.