2006ǯ 2��˸������줿 OpenSSH 4.3 (����Ӥ��ΰܿ��� 4.3p1) ���顢 ɸ��ǥȥ�ͥ�ǥХ��� (tun/tap) ����ǽ���Ĥ��ޤ����� �����Ȥ��ȡ���ڤ� VPN ���ۤ��뤳�Ȥ��Ǥ��ޤ��� ���ߤΤȤ����ޤ���ǽ�Ϥ����¤�줿��ΤǤ����� ���褫����Ū�� ssh ��ͳ�� NFS �ǥ��쥯�ȥ�� �ޥ���Ȥ���ʤɤ���Ū�˻Ȥ��ޤ��� ����ʸ��ǤϤ��Τ���δ���Ū����ˡ���������ޤ��� OpenSSH ������ȱ��Ѥ��Ǥ���������ǧ�ڤλȤ����� �狼�äƤ��륷���ƥ�����Ԥ��оݤȤ��Ƥ��ޤ���
������ǧ�ڤȤ�:
�ѥ���ɤΤ�������̩���ȸ������Υڥ���Ȥ�ǧ����ˡ�Ǥ���
�̾�Υѥ���ɤ�Ȥä�ǧ�ڤǤϡ�
���Ȥ��Ź沽����Ƥ���ȤϤ����ѥ���ɤ��ͥåȥ�����ή��ޤ���
������ǧ�ڤǤϥѥ���ɤϤޤä��� (�Ź沽���줿���Ǥ���) �ͥåȥ�����ή��ʤ��Τǡ�
������Τۤ��������Ǥ���������������ǧ�ڤǤ�桼���ϥѥ���ɤ�����������
(�ѥ��ե졼��) �����Ϥ��ޤ������ѥ����ǧ�ڤȰ㤤����ϥ�������ޥ�����
��̩�������椹�뤿������˻Ȥ�졢�ͥåȥ����ˤ�ή��ޤ���
����: ���ε�ǽ�Ϥޤ��¸��ʳ��Τ��ᡢOpenSSH ��ư��뤹�٤ƤΥץ�åȥե������ư��뤫�ɤ����� ��ǧ����Ƥ��ޤ��� (����ʸ��Ǥϡ�Linux �� FreeBSD �ǥƥ��Ȥ��ޤ���)�� �ޤ����٤�����ʬ�������Ѥ�뤳�Ȥ⤢�ꤨ�ޤ��������Ѥϼ�����Ǥ�ǡ�
OpenSSH ��Ȥä� VPN �Ǥ� tun/tap �ǥХ����Ȥ�����Τ�Ȥ��ޤ��� tun/tap �ǥХ����ϥ桼�������֤Υץ�����ब���ѤǤ��벾�ۥͥåȥ���ǥХ����ǡ� ���� tun/tap �ǥХ������Фȥ��饤����Ȥ�ξ���dz����� ���δ֤��̿��� OpenSSH ���Ź沽����� VPN ���Ǥ�������ޤ��� ���ΤȤ��� Linux �� *BSD �ǥ��ݡ��Ȥ���Ƥ��ޤ���
tun/tap ��Ȥä��ȥ�ͥ�� 2�����ʬ�����ޤ��� �ҤȤĤ� tun �ǥХ�����Ȥ���ˡ�ǡ������ Layer 3 (Point-to-Point) �� ���ߥ�졼�Ȥ���IP�ե졼���ž�����ޤ��� ����� PPP �ץ��ȥ����Ȥäƥ����Ф� 1��1 ���̿�����Τ������Ǥ��� VPN ��������ư���Ƥ���ȡ�Linux �ǤϤ���ϼ��Τ褦�˸����ޤ�:
# ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:192.168.3.1 P-t-P:192.168.3.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) # ping 192.168.3.2 PING 192.168.3.2 (192.168.3.2) from 192.168.3.1 : 56(84) bytes of data. 64 bytes from 192.168.3.2: icmp_seq=1 ttl=64 time=16.8 ms 64 bytes from 192.168.3.2: icmp_seq=2 ttl=64 time=16.1 ms 64 bytes from 192.168.3.2: icmp_seq=3 ttl=64 time=18.3 ms ...
�⤦�ҤȤĤ� tap �ǥХ�����Ȥ���ˡ�ǡ� ����� Layer 2 (Ethernet) �ߥ�졼�Ȥ���Ethernet �ե졼���ž�����ޤ��� VPN ��������ư���Ƥ���ȡ�Linux �Ǥϼ��Τ褦�˸����ޤ�:
# ifconfig tap0 tap0 Link encap:Ethernet HWaddr 00:FF:7F:02:53:D7 inet addr:192.168.3.1 Bcast:192.168.3.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) # ping 192.168.3.2 PING 192.168.3.2 (192.168.3.2) from 192.168.3.1 : 56(84) bytes of data. 64 bytes from 192.168.3.2: icmp_seq=1 ttl=64 time=37.6 ms 64 bytes from 192.168.3.2: icmp_seq=2 ttl=64 time=16.1 ms 64 bytes from 192.168.3.2: icmp_seq=3 ttl=64 time=16.6 ms ...
OpenSSH �� VPN ��Ȥ��ˤϡ��ʲ��Τ�Τ������Фȥ��饤����Ȥ�ξ����ɬ�פǤ�:
OpenSSH �����̤˥������ޤ��ϥѥå��������饤�ȡ��뤹��� OK �Ǥ��� tun/tap �ǥХ����ν����ϡ�OS ���Ȥˤ�������ۤʤäƤ��ޤ���
tun/tap �ɥ饤�Фϡ��̾�⥸�塼��η� (�⥸�塼��̾ tun
) ������ޤ���
�Ƕ�ΤۤȤ�ɤ� Linux �ǥ����ȥ�ӥ塼�����Ǥϡ�
���Υ⥸�塼���ɸ��Ǵޤޤ�Ƥ���Τǡ�
���� /etc/modules.conf
�˰ʲ��Τ褦�˽Ƥ����� OK �Ǥ���
alias tap0 tun alias tun0 tun
(�����Ǥ� tun/tap �ǥХ����Ȥ��Ƥɤ���⥤���ե������ֹ� 0 ��Ȥ��Ȳ��ꤷ�Ƥ��ޤ��� ����ʳ����ֹ��Ȥ�����Ŭ���������Ƥ�������)
��ư�ǥ⥸�塼������������ϡ������ͥ빽�ۤκݤ� "Network Device Support" ��
���� "Universal TUN/TAP device driver support" (CONFIG_TUN
) ��
�����å��������ɬ�פ�����ޤ���
devfs/udev ��ȤäƤ��ʤ����ϰʲ��Τ褦�ˤ��ƥǥХ����Ρ���
/dev/net/tun
���������ɬ�פ�����ޤ���
# mkdir /dev/net # mknod /dev/net/tun c 10 200 # chmod 0700 /dev/net/tun
���Ȥϰʲ��Τ褦�ˤ��ƥ⥸�塼�������ɤ��ޤ���
# modprobe tun
tun/tap �ǥХ����ˤĤ��Ƥξܺ٤ϡ�Linux �����ͥ�Υ�������������ˤ���
Documentation/networking/tuntap.txt
�Ƥ���������
FreeBSD �ξ��� conf �ե�������ǥ��ץ���� "device tun
" ��ͭ���ˤ��Ƥ����ޤ���
FreeBSD 6.0 �Ǥϡ�ɬ�פʥǥХ����Ρ��ɤ� devfs �ˤ�꼫ưŪ�˺�������ޤ���
OpenSSH �� VPN ��Ȥ��ݤ����դ��ʤ���Фʤ�ʤ��Τϡ� �����饤�����¦�� root �ץ��������������Ф� root �Ȥ��ƥ��������� �Ȥ������ȤǤ��� ����� tun/tap �ǥХ�������Τ��̾�������� root �����Ǥ��뤿��Ǥ� (���̥桼���� tun/tap ����Ĥ��뤳�Ȥ������Ȼפ��ФǤ��뤫�⤷��ޤ��� ��Ƥ��ޤ�����Ū�ˤϡ�����ϥ������ƥ������꤬����Ȥ���Ƥ��ޤ�)�� ���Τ��ᡢVPN ���饤����Ȥȥ����Ф�ξ���� root �桼���� ssh ������������ɬ�פ�����ޤ���
�ޤ�������ڤǤ���ȤϤ��äƤ⡢OpenSSH ��Ȥä� VPN �Ǥ� ���餫����饤����Ȥȥ����Фδ֤Ǥ����Ĥ��λ����� ���Ƥ���ɬ�פ�����ޤ�:
(�����Ǥ����֥ͥåȥ���ǥХ����Υ����ե������ֹ�פȤϡ�
tun0
�ʤɤ�̾���˴ޤޤ���������ʬ�Ǥ���)
�ޤ����饤�����¦�� root �Ѥ� RSA ��̩��/�������ڥ���Ĥ���ޤ� (SSH2 �ץ��ȥ����ѤǤ� - �Ť� SSH1 �ץ��ȥ���Ǥ� VPN �ϻȤ��ޤ���):
client# ssh-keygen Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): �ѥ��ե졼�������� Enter same passphrase again: �ѥ��ե졼�������� Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa. The key fingerprint is: 7c:7a:b5:5e:13:80:43:f3:0e:66:1f:9b:0a:d0:10:17 root@client
������¦�ˤ��θ����� (id_rsa.pub
) �����ꡢ
������ /root/.ssh/authorized_keys
�ե��������Ͽ����ʤɤ��ơ�
������̩�����ĥ桼���� root �����������Ĥ��Ƥ��ޤ���
���˥�����¦�� sshd ����ե����� (�̾�� /etc/ssh/sshd_config
) ��
PermitTunnel
���ܤ�����ޤ���
���ι��ܤˤϰʲ��Τ褦���ͤ�����Ǥ��ޤ�:
point-to-point
�� Layer 3 �Υȥ�ͥ�Τߤ���� (tun�ǥХ��������)
ethernet
�� Layer 2 �Υȥ�ͥ�Τߤ���� (tap�ǥХ��������)
yes
�� ξ���Υ����פΥȥ�ͥ����� (���饤����Ȥ��ȥ�ͥ�Υ����פ����٤�)
no
�� �ȥ�ͥ����Ĥ��ʤ�
PermitTunnel point-to-point
����ˡ��դĤ���⡼�Ȥ���� root ���������ػߤ��Ƥ���
(PermitRootLogin no
�ˤ��Ƥ���) �Ȥ�����¿���Ȼפ��Τǡ�
������ʬ���ѹ�����ɬ�פ�����ޤ����Ȥꤢ�������ΤȤ�����
�Ȥ��Ƥ����ޤ��礦 (����Ϥ����ޤǥƥ����ѤǤ�����Ǥ�äȰ�����������Ȥ��ޤ�)��PermitRootLogin without-password
���Τ��ȥ�����¦�� sshd ��Ƶ�ư���������ȿ�Ǥ����Ƥ���������
�ǽ�ˡ������Ф�ñ��ʺǾ��¤�����ǥƥ��ȤƤߤޤ��� ���� tun/tap �ǥХ�����Ȥä��̿�����ˤϡ� �����Υ����ե������������������� ifconfig ��¹Ԥ��� IP���ɥ쥹�����ꤹ��ɬ�פ�����ΤǤ�����ssh �Ϥ���ñ�� tun/tap ���������� �Ź沽�ȥ�ͥ����������Ǥ����Ĥޤꡢ�ºݤΥ����ե������������ �����Υ��ޥ�ɤ�Ǥ����Ƥ���ΤǤ���������ʬ��ư�����뤳�Ȥ�Ǥ��ޤ����� ���꤬ʣ���ˤʤ�Τǡ��Ȥꤢ�����ǽ�Ϥ������ư�Ǥ����ʤ����Ȥˤ��ơ� �ޤ��ȥ�ͥ뤬��Ω�Ǥ��뤫�ɤ���������ƥ��Ȥ��Ƥߤ뤳�Ȥˤ��ޤ���
VPN �Ϥ���ˤϡ����饤����Ⱦ�ǰʲ��Υ��ޥ�ɤ�¹Ԥ��ޤ�:
client# ssh -v -w0:0 server Enter passphrase for key '/root/.ssh/id_rsa': (�ѥ��ե졼��������)
-w
�ϥȥ�ͥ����ꤹ�륪�ץ����ǡ�
-w���饤�����¦�Υ����ե������ֹ�:������¦�Υ����ե������ֹ�
�Τ褦�˻��ꤷ�ޤ����ǥե���ȤǤϥȥ�ͥ���ѤΥǥХ����Ȥ��� tun ���Ȥ��ޤ���
�Ĥޤꡢ-w0:0
�ϥ��饤����ȡ������ФȤ�˥����ե������ֹ� 0 �� tun �ǥХ�����
�Ȥä� VPN ���Ω����Ȥ������Ȥ��̣���Ƥ��ޤ���
-v
�ϥǥХå��Ѥν��Ϥ�ɽ�����륪�ץ����Ǥ���
���ޤ������м��Τ褦�ʥ�å����� (Linux �ξ��) ���Фơ��̾�Υ����뤬���Ϥ���ޤ�:
... debug1: Authentication succeeded (publickey). debug1: channel 0: new [client-session] debug1: Entering interactive session. debug1: Requesting tun. debug1: sys_tun_open: tun0 mode 1 fd 7 debug1: channel 1: new [tun] Last login: Mon Feb 13 10:30:42 2006 from xxx.xxx.xxx.xxx server#
�ʲ��Τ褦�ʥ�å��������ФƤ����˽�λ���Ƥ��ޤ����ϡ� ���饤�����¦�Ǥ� tun/tap �ǥХ�������������꤬����ޤ�:
... debug1: Authentication succeeded (publickey). debug1: channel 0: new [client-session] debug1: Entering interactive session. debug1: Requesting tun. debug1: sys_tun_open: failed to open tunnel control interface: No such device debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 Connection to xxx.xxx.xxx.xxx closed. debug1: Transferred: stdin 0, stdout 0, stderr 40 bytes in 0.1 seconds debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 672.2 debug1: Exit status 0 debug1: compress outgoing: raw data 347, compressed 211, factor 0.61 debug1: compress incoming: raw data 61, compressed 47, factor 0.77
���顼�θ������ֿ�����ʬ�˽�Ƥ��ޤ���
�����ϡ������ͥ뤬 tun/tap �ǥХ�����Ȥ���褦�����ꤵ��Ƥ��ʤ����Ȥ��Ƥ��ޤ���
������ʬ��
"debug1: sys_tun_open: failed to open tunnel control interface: No such file or directory
"
���ä���硢�б�����ǥХ����Ρ��ɤ� /dev
�ʲ���¸�ߤ��ʤ����Ȥ��Ƥ��ޤ���
���äݤ���������¦�����꤬������ϼ��Τ褦�ˤʤ�ޤ�:
... debug1: Authentication succeeded (publickey). debug1: channel 0: new [client-session] debug1: Entering interactive session. debug1: Requesting X11 forwarding with authentication spoofing. debug1: Requesting authentication agent forwarding. debug1: Requesting tun. debug1: sys_tun_open: tun0 mode 1 fd 7 debug1: channel 1: new [tun] debug1: Remote: Failed to open the tunnel device. channel 1: open failed: administratively prohibited: open failed debug1: channel 1: free: tun, nchannels 2
����ϥ�����¦�� (���¤��ʤ������뤤�ϥǥХ��������ꤵ��Ƥ��ʤ��ʤɤ���ͳ��)
tun/tap �ǥХ��������ѤǤ��ʤ����Ȥ��Ƥ��ޤ���
���뤤�ϡ�"debug1: Remote: Server has rejected tunnel device forwarding
"
�Ƚ��Ϥ��줿���ϡ�������¦�ǥȥ�ͥ�λ��Ѥ����Ĥ���Ƥ��ʤ�
(PermitTunnel
���ͤ��������ʤ�) ���Ȥ��Ƥ��ޤ���
������¦�����꤬��������硢ssh �ϥȥ�ͥ�ʤ��ǥ������ư���뤫�� ���뤤�ϼ�ưŪ����³���ڤäƤ��ޤ��ޤ��� ���饤�����¦�����꤬��������硢ssh �Ϥ����˽�λ����褦�Ǥ���
���ơ����ޤ��ȥ�ͥ���Ǥ��Ƥ�����ϡ������Фȥ��饤����Ȥ�ξ����
tun �ǥХ��������������Ƥ���Ϥ��Ǥ���
����� ifconfig tun0
(���뤤�� ifconfig -a
) ��¹Ԥ��Ƥߤ�Ф狼��ޤ�:
(Linux ��) # ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 POINTOPOINT NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) (FreeBSD ��) # ifconfig tun0 tun0: flags=8011<UP,POINTOPOINT,MULTICAST> mtu 1500 Opened by PID 24015
�ȥ�ͥ�Ǥ��Ƥ��ʤ����֤� ifconfig tun0
��¹Ԥ���ȡ�
Linux �Ǥϥ����ե����� tun0 ���Τ�Τ�¸�ߤ������顼�Ȥʤꡢ
FreeBSD �Ǥ� "Opened by PID XXXX" ����ʬ��ɽ������ޤ���
��Τ褦��ɽ������Ƥ�����ϥȥ�ͥ����Ω���Ƥ��ޤ���
�����������ξ��֤Ǥϥ����Фȥ��饤����Ȥ� tun �ǥХ����֤��̿�ϩ����Ω���줿�����ǡ� �ޤ� IP �ؤ�����ϴ�λ���Ƥ��ޤ����̿���Ԥ�����ˤϥ����Фȥ��饤�����ξ���� tun �����ե�������IP ���ɥ쥹�����ꤷ�Ƥ��ɬ�פ�����ޤ��� �����Ǥ��̤�ü����Ȥäơ����饤����Ȥȥ����о��ξ���� tun �ǥХ��������ꤷ�ޤ� (���Ȥ��Ȥ���ϼ�ưŪ�˹Ԥ��褦���ꤷ�ޤ��������ޤ�ξ���Ȥ��ư�Ǥ�äƤߤޤ�)��
tun �ǥХ����� IP �ؤߥ�졼�Ȥ��� (�ĤޤꡢIP �ѥ��åȤ�ľ������������) �Τǡ� Ethernet �Υ����ե������Ȥϰ�äơ� ������� IP ���ɥ쥹����ꤷ�Ƥ��ɬ�פ�����ޤ���
(Linux �ξ��) # ifconfig tun0 ��ʬ��IP���ɥ쥹 pointopoint ����IP���ɥ쥹 (point to point�ǤϤʤ��Τ�����) (FreeBSD �ξ��) # ifconfig tun0 ��ʬ��IP���ɥ쥹 ����IP���ɥ쥹
������Фȥ��饤����Ȥ�ξ���Ǽ¹Ԥ��ޤ��� ���Ȥ��Х�����¦�β��� IP ���ɥ쥹�� 192.168.3.1�� ���饤�����¦�β��� IP ���ɥ쥹�� 192.168.3.2 �˷��Ȥ���ȡ� �ʲ��Τ褦�ˤʤ�ޤ�:
(������¦ - Linux �ξ��) server# ifconfig tun0 192.168.3.1 pointopoint 192.168.3.2 (���饤�����¦ - Linux �ξ��) client# ifconfig tun0 192.168.3.2 pointopoint 192.168.3.1
���줬���������顢���ޤ� IP ��٥�Ǥ� �̿����Ǥ���褦�ˤʤäƤ���Ϥ��Ǥ��Τǡ� ���ߤ��� ping �����äƳΤ���Ƥߤޤ��礦��
(������¦) server# ping 192.168.3.2 (�����Ф��饯�饤����Ȥ� ping) (���饤�����¦) client# ping 192.168.3.1 (���饤����Ȥ��饵���Ф� ping)
���Ȥ��̾�Υץ饤�١��ȥͥåȥ����Ʊ���褦�����ѤǤ��ޤ��� NFS �����Ѥ���ʤꡢNAT �����ꤹ��ʤ꼫ͳ�ˤ��Ƥ��������� �ʤ���NFS �ǥ��쥯�ȥ��ޥ���Ȥ���Ȥ��ϡ�TCP ���ץ�����Ĥ��뤳�Ȥ� �������ᤷ�ޤ� (®�٤��㤤�ޤ�)��
VPN ���å����ϥ桼�������������Ȥ������Ȥ�³���ޤ���
��ۤɤΥǥХå��⡼�ɤ� root �Υ����뤫�� exit
����ȡ�
ssh �ϥ����뤫��ȴ�������Ȥ�����Ȥ��� VPN �Υ��å�����³���ޤ�:
server# exit logout debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 2 (������ Control-C ������) debug1: channel 1: free: tun, nchannels 1 Killed by signal 2.
���ߤΤȤ����� VPN ���å�����λ����ˤ�ü�����
Control-C ������ ssh ���饤����Ȥ�
kill
����ʳ�����ˡ�Ϥʤ��褦�Ǥ���
Ʊ�ͤˡ����٤� tun �ǤϤʤ� tap �ǥХ�����Ȥä�
Ethernet ��٥�Υȥ�ͥ���äƤߤޤ���
�ȥ�ͥ�Τ����� tun ��Ȥ��� tap ��Ȥ����ϡ�
�����Фȥ��饤�����ξ��������˰�¸���Ƥ��ޤ���
�����Фϵ��Ĥ���ȥ�ͥ�μ����
sshd_config
�� PermitTunnel
���ܤǻ��ꤷ��
���饤����Ȥ��᤹��ȥ�ͥ�μ����
~/.ssh/config
(���뤤�� ssh_config
����
ssh �Υ��ޥ�ɥ饤�ץ����) �� Tunnel
���ܤǻ��ꤷ�ޤ���
�����ι��ܤȥȥ�ͥ�μ���Ȥδط��ϡ��ʲ��Τ褦�ˤʤäƤ��ޤ�:
PermitTunnel (������) �� Tunnel (���饤�����) ����
|
���� |
---|---|
��� yes
| PPP (tun) ���Ȥ��� |
�ɤ��餫������ yes (�ޤ��� point-to-point ) �ǡ�
�⤦������ point-to-point |
PPP (tun) ���Ȥ��� |
�ɤ��餫������ yes (�ޤ��� ethernet ) �ǡ�
�⤦������ ethernet |
Ethernet (tap) ���Ȥ��� |
�ɤ��餫������ point-to-point �ǡ�
�⤦������ ethernet |
�ȥ�ͥ�ϵ��ݤ���� |
�ɤ��餫������ no |
�ȥ�ͥ�ϵ��ݤ���� |
�����ι��ܤ����������ꤹ��ȡ�tun �ΤȤ���Ʊ���褦�˰ʲ��Υ��ޥ�ɤ� VPN �����ϤǤ��ޤ�:
client# ssh -v -w0:0 server
���뤤�ϡ�����ե����������뤫���ˡ�
ssh
�Υ��ޥ�ɥ饤�ץ����ľ�ܻ��ꤹ�뤳�Ȥ�Ǥ��ޤ���
client# ssh -v -oTunnel=ethernet -w0:0 server
������ -w
���ץ�����Ϳ���Ƥ���
���� 0
�Ϻ��٤� tun �ǤϤʤ� tap �Υ����ե������ֹ�Ǥ���
̵�������Ф˥�������Ǥ����顢ifconfig tap0
���ƤߤƤ�������:
(Linux ��) # ifconfig tap0 tap0 Link encap:Ethernet HWaddr 00:FF:4A:21:8F:3D BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) (FreeBSD ��) # ifconfig tap0 tap0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 00:bd:73:36:60:c8 Opened by PID 93688
�ǥХ������Ǥ��Ƥ���Τ��ǧ�����顢IP ���ɥ쥹�����ꤷ�Ƥ��ޤ��� tap �ǥХ����ξ��ϥ��ߥ�졼�Ȥ���Τ� Ethernet �ʤΤǡ� �����Ǥ��̾�Υͥåȥ�������ɤ˥��ɥ쥹����ꤹ��Τ�Ʊ����ˡ�� OK �Ǥ���
(������¦) server# ifconfig tap0 192.168.3.1 netmask 255.255.255.0 (���饤�����¦) client# ifconfig tap0 192.168.3.2 netmask 255.255.255.0
���ơ��ºݤ�����Ū�˻Ȥ��Ȥʤ�ȡ��������������Фȥ��饤����Ȥ�ξ����
��� ifconfig
��¹Ԥ��Ƥ���櫓�ˤϤ����ޤ���
�ޤ���⡼�Ȥ���� root �Υ�������Ѥ�ػߤ������ͤ⤤��Ǥ��礦��
���饤����Ȥȥ����Ф�������ʤ����Ȥˤ�äơ������κ�Ȥ�ܼۤ�ư�����뤳�Ȥ��Ǥ��ޤ�
(�Ȥ��äƤ⡢�ޤ������ǤϤ���ޤ����ߤμ����Ǥϡ�
IP ���ɥ쥹�ȥͥåȥ�������ե������ֹ�ϡ�
�����Фȥ��饤����Ȥ�ξ��������äƼ����Ƥ����ͤФʤ餺��
2��ʾ�Υ��饤����Ȥ�Ʊ���� VPN ��Ȥ����Ͼ������դ�ɬ�פˤʤ�ޤ���)
/root/.ssh/config
����ǽ�ˡ����饤�����¦�������ư�����Ƥߤޤ��礦�� root �Υۡ���ǥ��쥯�ȥ�ˡ��ʲ��Τ褦������ե�������֤��ޤ�:
(Linux ��) client# cat /root/.ssh/config Host server-vpn Hostname server.example.com Port xxx User root IdentityFile /root/.ssh/id_rsa Tunnel point-to-point TunnelDevice 0:0 PermitLocalCommand yes LocalCommand ( sleep 3; ifconfig tun0 192.168.3.2 pointopoint 192.168.3.1 ) &
�ǽ�� 4�Ĥ��������
(Hostname
, Port
, User
, IdentityFile
) �ϡ�
ɸ��Ū�ʤ�ΤǤ��������ϥ����ФΥۥ���̾���ݡ����ֹ�
(��ȯ���Ƥ��� ssh �ؤΥ����å��Τ��ᡢ���ߤǤ� sshd
��ǥե���Ȱʳ���
�ݡ��Ȥ�ư�����Ƥ���ͤ�¿���Ǥ��礦)����������桼��̾����������̩���ե������
���ꤷ�Ƥ��ޤ������� 4�Ĥ��������
(Tunnel
, TunnelDevice
, PermitLocalCommand
, LocalCommand
) ����
4.3 �� VPN ����Ѥ��뤿��˿������ɲä��줿���ץ����Ǥ�:
Tunnel
�� �ȥ�ͥ�μ���
(yes
, point-to-point
, ethernet
���뤤�� no
)��
TunnelDevice
�ĥȥ�ͥ�˻Ȥ����饤����Ȥȥ����ФΥ����ե������ֹ�
(���饤�����¦�Υ����ե������ֹ�:������¦�Υ����ե������ֹ�
�Τ褦�˻��ꤹ�롢����ϥ��ޥ�ɥ饤��� -w
���ץ�����Ʊ������)��
PermitLocalCommand
�� ǧ�ڤ������������ȡ����饤����Ȥ�¦����ưŪ�˥��ޥ�ɼ¹Ԥ��뤫�ɤ���
(yes
���뤤�� no
)��
LocalCommand
�� ǧ�ڤ������������ȡ����饤����Ȥ�¦�Ǽ�ưŪ�˼¹Ԥ��륳�ޥ��ʸ����
Tunnel
�ˤĤ��ƤϤ��Ǥ��������ޤ�����
TunnelDevice
�ϡ�����Ū�˥��ޥ�ɥ饤��� -w
���ץ�����
��äƤ������Ȥ�Ʊ���Ǥ����㤦�Τ�
PermitLocalCommand
�� LocalCommand
�ǡ�
���� 2�Ĥ���ꤹ��ȥ����Ф�ǧ�ڤ������������Ȥǡ���������Υ��饤����Ⱦ��
��ưŪ������Υ��ޥ�ɤ�¹Ԥ����뤳�Ȥ��Ǥ��ޤ��������Ǥϡ����ε�ǽ��Ȥä�
���饤�����¦�� ifconfig
��¹Ԥ����Ƥ��ޤ���
���ơ������Ǥ� LocalCommand
���������ʷ��ˤʤäƤ��ޤ�����
����ϸ����� (4.3p2) �Ǥ� ssh �Υ��ۤʻ��ͤΤ����Ǥ��������Ƥ�������� ssh �ϡ�
LocalCommand �μ¹Ԥ���λ�������Ȥ� tun/tap �ǥХ������ץ��ΤǤ���
������ Linux �Ǥ� tun/tap �ǥХ������Ȥ��Ƥ��ʤ� (�ɤΥץ������� open ���Ƥ��ʤ�) ���֤Ǥϡ�
ifconfig
�����ꤹ�뤳�ȤϤǤ��ޤ���
�������ä� LocalCommand ��¹Ԥ�������Ǥϡ��ޤ� tun/tap �ϳ�����Ƥ��餺��
�ʲ��Τ褦�ʥ��顼���ФƤ��ޤ��ޤ�:
SIOCSIFDSTADDR: No such device tun0: unknown interface: No such device
�����襤��LocalCommand
�ϻ��ꤵ�줿���ޥ��ʸ����Τޤޥ�������Ϥ��Τ�
(�Ĥޤꤳ��� sh -c "( sleep 3; ifconfig tun0 192.168.3.2 pointopoint 192.168.3.1 ) &"
��Ʊ���Ǥ�)��
����� LocalCommand
�Υ������λ�����Ƥ��顢
�Хå����饦��ɤ� ifconfig
��¹Ԥ����뤳�Ȥ��Ǥ��ޤ���
�����Ǻǽ�� sleep 3
����ꤷ�Ƥ���Τϡ�LocalCommand ���¹Ԥ���Ƥ���
3�ø�ˤϤ����餯 tun0 �����ե����������ѤǤ�����֤ˤʤäƤ���Ǥ������ȴ��Ԥ��Ƥ��ޤ���
ssh �� LocalCommand
�ץ������ν�λ���Ԥ��ޤ��Τǡ�
������� ( )
�Ǥ����äƥХå����饦��ɤǼ¹Ԥ����Ƥ��ޤ���
����ǰ����ǧ�ڤ���ȼ�ưŪ�� ifconfig
���¹Ԥ����褦�ˤϤʤ�ΤǤ�����
�դ��ƿ�Ū�ʴ������ݤ�ޤ���
(��������������ѥå��� openssh-unix-dev �����ä��ΤǤ��������ޤ�Ȥ�̵�뤵��Ƥޤ�)
���äݤ� FreeBSD �ξ��ϡ�tun �����Ǥ� ifconfig
���Ȥ���Τǡ�
�Ȥ��� sleep
�ʤɤε���Ȥ�ʤ��Ƥ⡢�դĤ���
�ȽƤ������������ޤ���LocalCommand ifconfig tun0 192.168.3.2 192.168.3.1
�ʤ��������Ǥ�äƤ��� ifconfig
��ľ�ܼ¹Ԥ�����ˡ��¤Ϥ��ޤꤪ������Ǥ��ޤ���
RedHat �Ϥ� Linux �Ǥ���� /etc/sysconfig/network-scripts/ifcfg-tun0
�ʤɤ�
����ե�������äƤ�����ľ�� ifconfig
��¹Ԥ��뤫����
/sbin/ifup tun0
�Ȥ���Τ������ʤ�����Ǥ��礦��
���ޤ������С��ʲ��Τ褦�����Ϥ�������� (���饤�����¦��) VPN �Ͻ�����λ�ˤʤ�Ϥ��Ǥ�:
client# ssh server-vpn Enter passphrase for key '/root/.ssh/id_rsa': (�ѥ��ե졼��������) Last login: Mon Feb 13 10:30:42 2006 from xxx.xxx.xxx.xxx server#
authorized_keys
�ե�������ѹ�����
���Ĥ��ϥ����Ф�����Ǥ�������ޤǤϥƥ��ȤΤ��ᡢ
sshd
����ե������ PermitRootLogin
��
without-password
����ꤷ�ƥ����Ф� root ��ľ�ܥ������뤳�Ȥ�
�����Ƥ��ޤ����������� root �Υ����뤬ɬ�פʤ��Ȥ��˥������¹Ԥ�����Τ�
��������Ǥ��ޤ������ǡ��ܳ�Ū�˱��Ѥ�����Ϥ������¤�⤦���ʳ����Ĥ����ơ�
�ˤ��ޤ�������ϡ� �֥�������ȶ���Ū������Υ��ޥ�ɤ��¹Ԥ������ˤΤ� root �Υ����������Ĥ���פȤ�����̣�Ǥ��� ��������ξ���ǧ�ڤ�ɬ�פǤ��� ���ޤ��Τ��Ƥ��ޤ����桼����PermitRootLogin forced-commands-only
~/.ssh/authorized_keys
�ե�����Ǥϡ�
�����Ȥˡ֤��θ��ǥ��������Ȥ��˶���Ū�˼¹Ԥ��륳�ޥ�ɡפ���ꤹ�뤳�Ȥ��Ǥ��ޤ���
�������ꤹ��Ȥ��Υ��ޥ�ɤΤߤ��¹Ԥ��졢����Ū�ʥ�����ϼ¹Ԥ���ޤ���
(�ºݤˤϡ����Υ��ޥ��ʸ���� sh -c
���Ϥ���ޤ�)��
����Ū�ˤϡ����Υե�����γƹԤ� (RSA �ޤ��� DSA ��) ����������Ͽ����Ƥ���ΤǤ�����
�ȤʤäƤ���Ȥ����ƥ����ȥ��ǥ����ʤɤ�ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApTD2ZRyh0R...
�Τ褦���ѹ����Ƥ��ޤ���command="�����¹Ԥ����륳�ޥ��" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApTD2ZRyh0R...
=
������˥��ڡ���������ƤϤ����ޤ��ޤ���1�Ԥ�ʬ�Ǥ��ʤ��褦���դ��Ƥ���������
��ǻ��ꤷ�� PermitRootLogin forced-commands-only
�ϡ�
���Τ褦�ʥ��ޥ�ɤ����ꤵ��Ƥ���������ǤΤ� root �����������Ĥ���Ȥ�����ΤǤ���
���ε�ǽ�ϡ��̾� root ���¤�ɬ�פ��귿��� (�Хå����åפʤ�) �˻Ȥ����ΤǤ�����
���Υ��ޥ�ɤ����ꤵ��Ƥ��������Ū�ʥ�����ϼ¹Ԥ��줺�����ޥ�ɤ���λ����ȼ�ưŪ�˥��������Ȥ��뤿�ᡢ
����Ū�ʥ��������������Ǥ���
�ޤ��������ե������ֹ�������� IP ���ɥ쥹����ޤäƤ�����Ǥ���С�
�����Ȥä� VPN ������⼫ưŪ�˹Ԥ����Ȥ��Ǥ��ޤ�:
(Linux ��) command="ifconfig tun0 192.168.3.1 pointopoint 192.168.3.2" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApTD2ZRyh0R... (FreeBSD ��) command="ifconfig tun0 192.168.3.1 192.168.3.2" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApTD2ZRyh0R...
����Ū�ˤϡ��������ޥ�ɼ¹Ԥϻ��ꤵ�줿���ޥ�ɤ���λ����ȼ�ưŪ�˥��������Ȥ��Ƥ��ޤ��ޤ�����
�ȥ�ͥ��ȤäƤ�����ϡ����ޥ�ɤ���λ�������Ȥ⥵���Фϼ¹Ԥ�³���ޤ���
�ʤ���sshd
�ξ��Ϥ��Υ��ޥ�ɤ�¹Ԥ������� tun/tap �ǥХ������Τǡ�
���饤�����¦�ǾҲ𤷤��褦�� sleep
�Υȥ�å���ɬ�פ���ޤ���
����ˡ������ˤϥ�����¦��������Ƥ� tun �ޤ��� tap �Υ����ե������ֹ�� ����Ū�˻��ꤹ�뤳�Ȥ��Ǥ��ޤ�:
(Linux ��) tunnel="0",command="ifconfig tun0 192.168.3.1 pointopoint 192.168.3.2" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApTD2ZRyh0R... (FreeBSD ��) tunnel="0",command="ifconfig tun0 192.168.3.1 192.168.3.2" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApTD2ZRyh0R...
(����: ����ޤ�����˥��ڡ��������äƤϤ����ޤ���)
��������ȡ����饤����Ȥ��餳�θ���Ȥäƥ��������Ȥ���ɬ��
������¦�� tun0 �ǥХ����������� ifconfig
����ưŪ�˼¹Ԥ����
(�����⡢����Ū������ϼ¹Ԥ���ʤ�) ���Ȥˤʤ�ޤ���
�ʲ��Τ褦�����Ϥ��Ʋ���ФƤ��ʤ��ä��������Ǥ�:
client# ssh server-vpn Enter passphrase for key '/root/.ssh/id_rsa': (�ѥ��ե졼��������)
����ޤǤϥ��饤����Ȥȥ����Ф� 1��1 �ξ��������ꤷ�Ƥ��ޤ������� ʣ���Υ��饤����Ȥ� VPN ��Ȥ碌�������ϰʲ��Τ褦�ˤ��ޤ��� ���饤����� A �� B ��Ʊ��Υ����Ф���³����Ȳ��ꤷ�ơ� ���줾��ʲ��Τ褦������ե������������ޤ�:
���饤����� A �� /root/.ssh/config
:
client-a# cat /root/.ssh/config Host server-vpn Hostname server.example.com Port xxx User root IdentityFile /root/.ssh/id_rsa Tunnel point-to-point TunnelDevice 0 PermitLocalCommand yes LocalCommand ( sleep 3; ifconfig tun0 192.168.3.2 pointopoint 192.168.3.1 ) &
���饤����� B �� /root/.ssh/config
:
client-b# cat /root/.ssh/config Host server-vpn Hostname server.example.com Port xxx User root IdentityFile /root/.ssh/id_rsa Tunnel point-to-point TunnelDevice 0 PermitLocalCommand yes LocalCommand ( sleep 3; ifconfig tun0 192.168.3.3 pointopoint 192.168.3.1 ) &
���� 2�ĤΥե�����ϰ��ֺǸ�� LocalCommand
�ʳ��Ϥ��٤ƶ��̤ι��ܤǤ���
������������Ȱ�ä� TunnelDevice
�ˤ� 0:0
�ǤϤʤ�
0
�Ȼ��ꤷ�Ƥ����ޤ������ޤǤϥ��饤����Ȥ�������¦�� tun �����ե������ֹ��
���ꤷ�Ƥ��ޤ�������:0
���ά����ȥ�������ʥ����ե������ֹ���������Ǥ���
������¦���ֹ�γ�����Ƥϥ�����¦��Ǥ���뤳�Ȥ��Ǥ��ޤ�
(���η����ϥ��ޥ�ɥ饤��� -w
���ץ����Ǥ�Ȥ��ޤ�)��
���������ξ��ϡ�ɬ��������¦�� authorized_keys
�ե������
tunnel
���ץ�����Ȥäƥ�����¦�Υ����ե������ֹ����Ƥ���ɬ�פ�����ޤ���
����ʤ���ͽ�۳��Υ����ե�������������Ƥ��뤳�Ȥ����뤿��Ǥ�
(���Ȥ��� FreeBSD �Ǥ� tun100 �ʤɤ�������Ƥ���)��
�ޤ������饤����� A �ȥ��饤����� B �Ϥ��줾���̡�����̩������������Ȥ����Ȥ� ���դ��Ƥ����������������뤳�Ȥǥ����Ф���꤬�ȤäƤ������ˤ�äƥ��饤����Ȥ��̤��� �����ե������ֹ�� IP ���ɥ쥹��դ�ʬ���뤳�Ȥ��Ǥ��ޤ�:
server# cat /root/.ssh/authorized_keys tunnel="0",command="ifconfig tun0 192.168.3.1 pointopoint 192.168.3.2" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApTD2Z... (���饤����� A �θ�����) tunnel="1",command="ifconfig tun0 192.168.3.1 pointopoint 192.168.3.3" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyDXuQ... (���饤����� B �θ�����)
������
���饤�����¦�⥵����¦�⥤���ե������ֹ�� IP ���ɥ쥹��ޤä������ꤻ����
���ξ�� DHCP �Τ褦�ʤ��Ȥ��Ǥ����餤���ΤǤ��������Τ���ˤ�
������¦�� (command
�Ƕ����¹Ԥ����) �ץ�������
������Ƥ�줿�����ե������ֹ���Τ�ɬ�פ�����ޤ���
�����������ߤΤȤ��������Ф��ɤ��ֹ�Υ����ե������������Ƥ��Τ�
���������Τ뤹�٤Ϥ���ޤ��� (�Ķ��ѿ��ˤ⸽��ޤ���)��
(���ι�ޤ�������)
��³ | NFS ľ�� | VPN+NFS | ssh+rsync |
---|---|---|---|
Ethernet 100Mbps | s | s | 65s |
�����֥��ǥ� (���� 10Mbps����) | 1594s | 1371s | 83s |
�ʤ��������֥��ǥ��Ȥä��ݤ� NFS �� tcp ���ץ�����Ĥ��Ƥ��ޤ��� �ޤ������饤�����¦�� ssh �ˤ� (NFS, rsync ���Ȥ��) �ʲ��Τ褦�ʥ��ץ�����Ϳ���ޤ���:
Ciphers arcfour (�Ź沽���르�ꥺ��˹�®�� arcfour ����ꤹ��) Compression yes (���̤���Ĥ���) KeepAlive yes (������֤��Ȥ� Keep-alive ��å�����������)
NFS+VPN �ξ�硢
cp -a
�����̤Υե������ž�����Ƥ���ȡ������
VPN ��Υͥåȥ�����ޤä���ȿ�����ʤ��ʤ� (ping ���̤�ʤ�)
�Ȥ��������������Ӥ��ӵ�����ޤ��������줬���ΤˤɤΤ褦�ʾ���
������Τ��Ϥ��ޤΤȤ��������Ǥ���