設定後ネットワーク共有の簡単な方法UbuntuシステムからダウンストリームArch LinuxシステムのDHCPを介してIPアドレスを取得すると、Archシステムはssh
Ubuntuシステムに接続してDNSを確認できますが、インターネットと通信することはできません(ping
timeout pacman
)。 Arch Linuxマシンでは:
$ ip route show dev net0
default via 10.42.0.1 metric 202
10.42.0.0/24 proto kernel scope link src 10.42.0.15 metric 202
$ ip addr show dev net0
...
inet 10.42.0.15/24 brd 10.42.0.255 scope global net0
...
Ubuntuマシンで:
$ ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether e8:11:32:66:e3:4d brd ff:ff:ff:ff:ff:ff
inet 10.42.0.1/24 brd 10.42.0.255 scope global eth0
inet6 fe80::ea11:32ff:fe66:e34d/64 scope link
valid_lft forever preferred_lft forever
$ ip addr show dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 88:53:2e:1b:4b:1c brd ff:ff:ff:ff:ff:ff
inet 192.168.1.64/24 brd 192.168.1.255 scope global wlan0
inet6 fe80::8a53:2eff:fe1b:4b1c/64 scope link
valid_lft forever preferred_lft forever
Ubuntuで自動NAT設定が失敗した可能性がありますか?どのように動作するのか分からない。どのように検出しますか?
答え1
1つの混乱は、ArchマシンのDNSが機能すると言われたことです。 DNS サーバーが Ubuntu システムであれば良いです。 DNS サーバーが外部にある場合は混乱します。私はArchについてよく知りません。たった一度だけ設置してみたからです。しかし、通常、/etc/resolv.conf
あなたのDNSサーバーが誰であるかを確認できます。内部にいる場合、UbuntuシステムのNATまたは配信が正しく機能しない可能性があります。外部の場合(外部ホストに対するDNSクエリを正常に解決したことを意味する)、問題はiptablesの問題かもしれません。
「何が間違っているのか」という観点からは、配信/ NATである可能性が高くなります。したがって、Ubuntuシステムで配信が実際に有効になっていることを確認してください。
fireapple# cat /proc/sys/net/ipv4/conf/all/forwarding
1
「0」が返されると、転送が有効にならない可能性があります。一時的に問題を解決するには
fireapple# echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
再起動後も続行するには、/etc/sysctl.confを編集し、次の行を追加(または同様のものに変更)します。
net.ipv4.ip_forward = 1
以下はNATを設定するクイックスクリプトです。たとえば、次を挿入し、NAT.sh
完了したことを確認してchmod +x
から挿入します/usr/local/bin/
。どちらのホストも10.42.0.0/24アドレスを持っているという事実に基づいて、どのインターフェイスが何をしているのかを想定しました。
#!/bin/sh
export INTERNET=wlan0 # Assuming eth0 is your Internet-facing address
export INTERNAL=eth0 # Likewise, assuming your WiFi is internal
iptables --flush # Clean slate
iptables -t nat -A POSTROUTING -o $INTERNAL -j MASQUERADE
iptables -A FORWARD -i $INTERNAL -o $INTERNET -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $INTERNET -o $INTERNAL -j ACCEPT
いったん位置を決めたら実行します(例sudo /usr/local/bin/NAT.sh
:)。すべてが順調に進むと、外部の世界と自由に会話できます。