iptablesを使用して単一のホームホストをNATサーバーに変換できますか?

iptablesを使用して単一のホームホストをNATサーバーに変換できますか?

一方:パソコンあり(HostA)ただインターネット接続が可能なNIC。同じスイッチにネットワークカードを持つ別のコンピュータ(HostB)があります。ホストBはいいえインターネットアクセスが設定されていません。 HostA には、デフォルトゲートウェイと DNS サーバーが正しく構成されています。 IPv4を使用しています。ホストオペレーティングシステムはUbuntu 13とFedora17です。

私が望むもの:今HostBもインターネットに接続できることを願っています。iptables仮想tun / tapデバイスの「特定の」組み合わせ、またはHostAとHostBの間のVPN設定などを使用できますか?

私がすでに知っていてできること:現在、sshHostB(ssh -D 9050 UserA@HostA)でSOCKSベースのプロキシを使用し、このプロキシを介してHostBによって選択された「削除された」アプリケーションへのトラフィックをHostAおよび他の場所にルーティングできます。ただし、残念ながらすべてのアプリケーションを認証できるわけではありません。 HostAに2つのNICがある場合は、いくつかのルールを使用してHostAをゲートウェイに変換し、NIC-1とNIC-2(NIC-1はHostB、NICに接続されています)間でトラフィックをルーティングできることが明らかになりました。iptables。 -インターネットに2つ)。しかし、HostAに別のネットワークカードを取り付けることは私にとっては不可能です。

PS:私は以前に投稿した内容です。superuser.comにありますが、有用な情報はありません。

編集1:

インターネット情報

ホストA:

:> ip addr
[...]
2: p4p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether d4:be:d9:d5:46:05 brd ff:ff:ff:ff:ff:ff
inet 192.168.22.9/24 brd 192.168.22.255 scope global p4p1 

:> ip route
default via 192.168.22.254 dev p4p1 proto static
192.168.22.0/24 dev p4p1 proto kernel scope link src 192.168.22.9

ホストB:

:> ip addr
[...]
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 30:f9:ed:d9:2e:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.22.234/24 brd 192.168.22.255 scope global eth0 

:> ip route
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.22.0/24 dev eth0 proto kernel scope link src 192.168.22.234 metric 1

答え1

ルーティングは「送信先(および場合)」に関するものです。これは単にNICを選択する以上の意味を持ちます。あなたの場合、ルーティングは非常に簡単です。

最も単純な形式(ホストAのすべてのコマンド)で偽装する必要があります。

iptables -t nat -I POSTROUTING -s 192.168.22.234 -j MASQUERADE

たぶん(まだではなく)、配信を許可する必要があります。

iptables -I FORWARD 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD 2 -s 192.168.22.234 -j ACCEPT

ホストAがホストBのデフォルトゲートウェイとして構成されていると仮定する。

編集1:

少しの会話と議論の終わりに、状況はより明確になりました。理論的には、Bにデフォルトゲートウェイを設定するだけで十分です。しかし、ゲートウェイ(質問の管理下にない)がホストBをブロックしているようです。したがって、胃腸ソリューションが必要です。

関連情報