IPv6로 액세스하면 "via IPv6"이 나오는 사람

6057 단어 PHPopsworksIPv6AWS
IPv6로 액세스하면 "via IPv6"라고 나오는 예의 녀석 만들었습니다.
(HTML 태그 붙일 뿐의 녀석이 발견되지 않았기 때문에)

표시해보기

IPv6에서 연결하면

가 표시됩니다.

IPv4에서 연결하면

가 표시됩니다.

사용법


<span id="kibousoft-viav6"></span>
<script type="text/javascript">
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://viav6.kibousoft.co.jp/', true);
xhr.onreadystatechange = function(){
if (xhr.readyState === 4 && xhr.status === 200){
   var dom = document.getElementById('kibousoft-viav6');
   dom.innerHTML = xhr.responseText;
 }
};
xhr.send(null);
</script>

소스 코드



더럽지만 직접 쓴다. 큰 일을하지 않습니다.

index.php
<a href="https://github.com/kibousoft/viav6_web/" style="text-decoration: none; color: white;">
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$headers = apache_request_headers();
if ($headers['X-Forwarded-For']) {
    $ip = $headers['X-Forwarded-For'];
}

if (preg_match('/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/', $ip)) {
    echo '<div style="background: linear-gradient(#FF0000, #FF99CC); padding: 5px; border: 1px solid #333333; border-radius: 3px; font-size: 13px; width: 50px; text-align: center; font-family: sans-serif;">via IPv4</div>';
} else {
    echo '<div style="background: linear-gradient(#0000FF, #99CCFF); padding: 5px; border: 1px solid #333333; border-radius: 3px; font-size: 13px; width: 50px; text-align: center; font-family: sans-serif;">via IPv6</div>';
}
?>
</a>

CORS 이야기



외부에서 XHR로 검색할 수 있는 사이트에서는Access-Control-Allow-Origin , Access-Control-Allow-Methods 헤더를 반환해야 합니다.
.htaccess에서 다음을 설정했습니다.

.htaccess
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET"

인프라 이야기



처음에는 Amazon API Gateway에서 시도했지만 API Gateway는 IPv6을 지원하지 않았습니다.
그래서 OpsWorks에서 PHP App Server를 세워서 움직이고 있습니다.
OpsWorks에도 다음과 같은 문제가있었습니다.
  • Application Load Balancer(IPv6 지원)를 지원하지 않음
  • EC2에 IPv6 주소를 연결할 수 없습니다
  • 보안 그룹이 IPv6 TCP 80 번호를 허용하지 않음

  • 따라서 위의 설정은 수동으로 수행했습니다.

    비고


  • Happy Eyeballs의 관계로, 사이트에는 IPv4로 연결되어, XHR은 IPv6로 연결되는 케이스도 있군요나 세세한 이야기는 없이.
  • 좋은 웹페이지 즐겨찾기