web-dev-qa-db-ja.com

コンテナ内からの発信インターネット呼び出しをブロックする

この質問は、私の 前の投稿 と似ていません。これは非常に簡単だと思いますが、ネットワーキングとubuntuファイアウォールについては十分に知りません。

この記事 に従って、ec2のubuntuサーバー内にLinuxコンテナーをセットアップしました。コンテナからインターネットにアクセスできます。

                       | ----Ubuntu Server on EC2 -----
 ==== INTERNET <==== > |  some magic routes traffic  <===   lxc container
                       |                                    [192.168.3.1] 
                       |------------------------------

コンテナ内にインターネットが必要だったのは、アプリの依存関係をインストールするためだけです。今、私はインターネットアクセスを遮断する必要があります。インターネットから特定のユーザーアカウントを防止するような他のアプローチは気にしません。

これは、ネットワーク構成がどのように行くかです、私が読むべきものに関するアイデア、手がかり、または提案は高く評価されます:


ネットワークブリッジがあります。

brctl addbr br0
brctl setfd br0 0
ifconfig br0 192.168.3.1 up

それから私はこれをしました:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1

それからこれ:cat /etc/dnsmasq.conf

domain-needed
bogus-priv
interface = br0
listen-address = 127.0.0.1
listen-address = 192.168.3.1
expand-hosts
domain = containers
dhcp-range = 192.168.3.50,192.168.3.200,1h

その後:cat etc/dhcp3/dhclient.conf

prepend domain-name-servers 127.0.0.1;
prepend domain-search "containers.";

それから私は走った:

dhclient -e IF_METRIC = 100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dh​​cp/dhclient.eth0.leases eth0

3
gideon

だから私は自分でそれを考え出した。

私はただ:

sysctl -w net.ipv4.ip_forward=0

そして出来上がり! :)もちろん、_ping www.google.com googleのIPを解決してから失敗します。したがって、dnsは引き続き機能します。

簡単なtoggleこれに対する解決策は投票で評価されます:)

2
gideon