最近質問した内容をもう少し詳しく説明したいと思います。ここ(そして助けを得る)このチュートリアルに基づいて: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)