Vagrant で CentOS7 を動かしてみたときに知っているコマンドが使えなくて困った話
こんにちは。
今更 Vagrant の話になって恐縮ですが、手でコマンド叩いて確認したいことがあって、CentOS7環境をつくりました。
$ vagrant init centos/7 $ vagrant up $ vagrant ssh
これで VM にログインまでできました。さらに、httpd のインストール@vagrant。
# yum install -y httpd
次にローカルの Vagrantfile を編集し、ブラウザからアクセスできようにします。
$ cat Vagrantfile| grep private_network # config.vm.network "private_network", ip: "192.168.33.10" $ vi Vagrantfile #上記をコメントアウト $ vagrant reload $ cat Vagrantfile| grep private_network config.vm.network "private_network", ip: "192.168.33.10"
ただ、 この時点でブラウザからアクセスできません。。。困った。
結局問題だったのは、以下の2点です。 - VM 側でネットワークアダプタが認識されていない - firewalld に http が弾かれている
VM 側でネットワークアダプタが認識されていない
あるあるですがこの調査ではよく ifconfig を叩いてます。よし、、、
# ifconfig -bash: ifconfig: command not found
Oops… command not found. だと。。。
そういえば、ifconfig を使うのはおっさんだ という話を思いだしました。若者は ip を使うみたいですね。
# ip -a ・・・ 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 link/ether 08:00:27:95:72:f8 brd ff:ff:ff:ff:ff:ff
よくわからないけど 192.168.33.10 が書いてないので shutdown -r
で再起動。再度確認します。
# ip a ・・・ 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:95:72:f8 brd ff:ff:ff:ff:ff:ff inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe95:72f8/64 scope link valid_lft forever preferred_lft forever
今度は大丈夫そうですね。
再び、ブラウザからアクセス、、、するもダメでした。
firewalld に http が弾かれている
それじゃ iptable かなと思ってvi /etc/sysconfig/iptables
を確認するも"/etc/sysconfig/iptables" [New File]
がでてファイルがありません。
調べると CentOS7 からは firewalld というサービスが使用されているみたいです。
firewall-cmd
を確認するも ssh
しか許可されていません。
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules:
# vi /etc/firewalld/zones/public.xml # <service name="http"/> を追加
<?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="dhcpv6-client"/> <service name="ssh"/> <service name="http"/> </zone>
再起動
# systemctl restart firewalld
確認
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client http ssh ports: protocols: masquerade: no forward-ports: sourceports: icmp-blocks: rich rules:
まとめ
これでブラウザからアクセスができました。
補遺
CentOS6 の時はservice httpd start
, chkconfig httpd on
のように使ってましたが、CentOS7 からは systemctl
を使うとのことでした(エイリアスになっている)。
サービスの起動
# systemctl start httpd
サービスの自動起動を on
# systemctl enable httpd
サービスの停止
# systemctl stop httpd
サービスの自動起動を off
# systemctl disable httpd