iptables は、ソース IP に基づいて特定のデバイスを別のインターフェイスに転送します。

iptables は、ソース IP に基づいて特定のデバイスを別のインターフェイスに転送します。

最近質問した内容をもう少し詳しく説明したいと思います。ここ(そして助けを得る)このチュートリアルに基づいて:https://www.instructables.com/Raspberry-Pi-VPN-Gateway/#step5

Raspberry PIをVPNボックスとして使用して、次のIPテーブルを適用し、送信元IPアドレスを使用してVPNインターフェイス(norlynx)を介してトラフィックをルーティングしました。192.168.4.26、同じインターフェイスを終了すると効果が非常に良いです。

現在、私は1つの入出力インターフェイス(eth0)を使用しており、VPNはNordVPNで提供されています(norlynxはVPNインターフェイスの名前です)。

sudo iptables -t nat -A POSTROUTING -o nordlynx -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o nordlynx -s 192.168.4.26 -j ACCEPT
sudo iptables -A FORWARD -i nordlynx -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -i eth0 -p icmp -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT      
sudo iptables -P FORWARD DROP
sudo iptables -P INPUT DROP

私の問題は、Nordlynxを介して転送されないすべてのIPアドレスが無効になったことです。別のデバイスIPアドレスを渡してテストを試みました。192.168.4.51VPNを通過する必要がないようにeth0インターフェイスを終了しますが、機能しません。

sudo iptables -A FORWARD -i eth0 -o eth0 -s 192.168.4.51 -j ACCEPT
sudo iptables -A INPUT -i eth0 -s 192.168.4.51 -j ACCEPT

iproute2わかりました。おそらくこれを使用する必要がありますか?次のIPルールとルートを追加してみましたが、まだ何もありません。

ip rule add from 192.168.4.51 table 200
ip route add default via 192.168.4.1 dev eth0 table 200
ip route flush cache

IPルール/パスに関係なくiptablesルールによってブロックされているからですか?私はここで少し混乱しているので、私が何を間違っているかについてのアドバイスは大きな助けになります。

編集する:

                                  +--------------+                               
                                  |              |                               
                                  |  ISP MODEM   |                               
                                  |              |                               
                                  +--------------+                               
                                         |                                       
                                         |                                       
                       +------------------------------------+                    
                       |                                    |                    
                       |            MAIN ROUTER             |                    
                       |            192.168.4.1             |                    
                       |                                    |                    
                       +------------------------------------+                    
                           |              |               |                      
                           |              |               |                      
             +----------------+   +--------------+   +---------------+           
             |                |   |              |   |               |           
             |    MACBOOK 1   |   | RASPBERRY Pi |   |   MACBOOK 2   |           
             |  192.168.4.26  |   | 192.168.4.63 |   | 192.168.4.51  |           
             |                |---|              |---|               |           
             +----------------+   +--------------+   +---------------+           
                  ---                                         ---                
                     \---                                 ---/                   
                         \---                         ---/                       
                             \---                 ---/                           
                                 \--           --/                               
                MANUALLY SET ROUTER ADDRESS OF DEVICES TO RASPBERRY Pi           
                                  (192.168.4.63)                                 
pi@raspberrypi:~ $ ip rule show
0:  from all lookup local 
32762:  from 192.168.4.51 lookup vpnbypass 
32763:  from all lookup main suppress_prefixlength 0 
32764:  not from all fwmark 0xca6c lookup 51820 
32765:  from all to 192.154.196.27 lookup main 
32766:  from all lookup main 
32767:  from all lookup default
pi@raspberrypi:~ $ cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0   unspec
#
# local
#
#1  inr.ruhep

200 vpnbypass

VPN が起動すると、Linux アプリケーション用の NordVPN (Wireguard Protocol) は次の IPtables を設定します。

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -s 192.154.196.27/32 -i wlan0 -j ACCEPT
-A INPUT -s 192.154.196.27/32 -i eth0 -j ACCEPT
-A INPUT -i wlan0 -p udp -m udp --dport 22 -j ACCEPT
-A INPUT -i wlan0 -p udp -m udp --sport 22 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 22 -j ACCEPT
-A INPUT -i wlan0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i wlan0 -p tcp -m tcp --sport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 22 -j ACCEPT
-A INPUT -i wlan0 -j DROP
-A INPUT -i eth0 -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o nordlynx -j ACCEPT
-A FORWARD -i nordlynx -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -d 192.154.196.27/32 -o wlan0 -j ACCEPT
-A OUTPUT -d 192.154.196.27/32 -o eth0 -j ACCEPT
-A OUTPUT -o wlan0 -p udp -m udp --dport 22 -j ACCEPT
-A OUTPUT -o wlan0 -p udp -m udp --sport 22 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --dport 22 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 22 -j ACCEPT
-A OUTPUT -o wlan0 -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -o wlan0 -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -o wlan0 -j DROP
-A OUTPUT -o eth0 -j DROP

ベストアンサー1

ネットワークトポロジを説明できますか? 192.168.4.26はRPiのローカルIPアドレス、192.168.4.51はRPiの背後にある他のPCですか?

このコマンドの出力をコピーして貼り付けます。

ip rule show
cat /etc/iproute2/rt_tables 
ip route show table xyz (for every table xyz form ip rule show command above or table name from rt_tables file)

おすすめ記事