2 つのインターフェース間でパケットを転送するにはどうすればよいですか?

2 つのインターフェース間でパケットを転送するにはどうすればよいですか?

eth0私のラップトップ(Ubuntu 13.10を使用)は、 IPで有線接続を使用してインターネットに接続されており、 IPでAT192.168.42.13としても機能します(APの設定にはairbase-ngを使用しました)。今、私はそのWiFiに接続する必要があるAndroidデバイスを持っています。私のAndroidは、私が設定したサーバーに接続して、次のネットワーク設定を受け取ることができることがわかります。(私はツールコールを使用しました。wifi hotspotwlan0192.168.1.1hotspotdhcpネット情報II私の Android で以下の詳細を確認するには、PlayStore からダウンロードしてください。

# My android network settings (connected to the wlan0 of my laptop):
ip address: 192.168.1.10
subnetmask: 255.255.255.0
gateway   : 192.168.1.254
ap-mac    : xx:xx:xx:xx:xx:xx

# My pc's eth0 configuration
ip address: 192.168.42.13
submetmask: 255.255.255.0
gateway   : 192.168.42.129
iface mac : yy:yy:yy:yy:yy:yy

# My pc's wlan0 (hotspot interface) configuration
ip address: 192.168.1.1
subnetmask: 255.255.255.0
gateway   : 192.168.1.1
iface mac : zz:zz:zz:zz:zz:zz

このスレッドここ同様の問題について語っています。ワイヤレスAPのデバイスをインターネットに接続するには、ネットワークeth0間でパケットを転送する必要があることがわかりました。wlan0受信したパケットを転送しwlan0 to eth0eth0 to wlan0デバイスをインターネットに接続するにはどうすればよいですか?

答え1

まず、システムでIP転送を有効にする必要があります。これを一度だけ行うには、

sysctl -w net.ipv4.ip_forward=1

または

echo 1 > /proc/sys/net/ipv4/ip_forward

ルートとして実行します。永続的にしたい場合は、

/etc/sysctl.conf

そして、次の行を追加します。

net.ipv4.ip_forward = 1

これは再起動時または実行時に適用されます

sysctl -p /etc/sysctl.conf

それが終わったら、おそらくNAT接続が必要になります。ルーターが192.168.1.0/24ネットワークが192.168.42.13経由でアクセス可能であることを認識していない可能性が高いためです。192.168.42.13が静的な場合は、

iptables -t nat -A POSTROUTING -i wlan0 -s 192.168.1.0/24 -j SNAT --to-source 192.168.42.13

それ以外の場合は

iptables -t nat -A POSTROUTING -i wlan0 -s 192.168.1.0/24 -j MASQUERADE

チェックしてくださいUbuntu Iptablesの使い方再起動時にこれらのルールを保存する方法を説明します。

関連情報