設定:
- DHCP(isc-dhcp-server)サーバーとDNS(bind9)サーバー(ルーターの役割)に設定されたサーバーがあります。
- eth0デバイスを使用してpppoe(ppp0)を介してインターネットに接続します。
- eth1は、アクセスポイントとして機能するルータに接続されます。
- アクセスポイントを使用すると、クライアントはイーサネットまたはWiFi経由で接続できます。
- ここで定義されているiptablesを使用してトラフィックをeth1からppp0に転送します(インターネットデバイスと一致するようにいくつかの変更)。https://killtacknine.com/building-an-ubuntu-16-04-router-part-3-firewalls/。
- IPV6も同様に設定されます。
- ufwは、「どこでも192.168.1.0/24を許可する」ルールを介して有効になります。
- サーバーはppp0を介してVPN(PPTP)に接続し、接続するとデバイス名でppp1を取得します。
私が望むのは、eth1デバイスを介してppp1を介してVPNに接続されている特定のクライアントからのインターネットトラフィック(IPまたはMACアドレスベース)を転送することです。
次のルールを使用してiptablesを設定しようとしました。
iptables -A INPUT -i ppp1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -s 192.168.1.113 -o ppp1 -j ACCEPT
iptables -A FORWARD -i ppp1 -o eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE
しかし、うまくいかないようです。私が何を見逃しているのかわかりません。 iptablesの知識はほぼゼロです。
答え1
1) AP が eth1 で接続されていることを確認します。足独自のイーサネットインターフェイスを WLAN インターフェイスに接続します。それ以外の場合、DHCPは役に立たず、NAT(多くのホームルーターのデフォルト)を実行している場合は、クライアントのIPアドレスを表示できません。
2)ルーティングを実行する必要はありませんiptables
(私のマイナーな苦情です。何らかの理由でインターネットの多くはルーティングにファイアウォールルールが必要だと思います...)。特に、NATを実行する必要はありません(VPNが何らかの理由で要求しない限り、質問にこれを決定する情報はありません)。
欲しいなら路線データパック~からあなたに必要な特定の顧客ポリシールーティング(Googleにはチュートリアルがたくさんあります)。基本的にはそうです。
ip rule add from <source address> lookup <table name>
次に、パス(あなたの場合)ppp1
とそれに関連付けられたゲートウェイを定義するテーブルを追加します。
ip route get <dest address>
オペレーティングシステムは、パケットがどこに行くべきかを考えていることを伝えます。ファイアウォールルールをデバッグするよりもはるかに簡単です。
3)wireshark
(またはtcpdump
別のウィンドウで関心のある各ネットワークインターフェイスに1つずつ)を使用してすべてをデバッグします。どのパケットがどのアドレスを使用してどこに行くのかを実際に確認することなく、何が間違っているのかを知ることは困難です。